If you are horrible in school, then don't waste your time and money.
If you have a burning desire to do start a business (other than freelancing) or to travel, etc, then skip college.
If you believe that you want to be a developer / designer in the future but not so sure about details beyond that, then college might be good.
The great thing about college is that it's a good environment for discovery and being around a lot of other people at the same stage of life as you are. It's also a good environment for learning from others, bouncing ideas off each other and experimenting with starting businesses with your peers. Who knows, maybe something shows promise and you can drop out. ;)
Keep your freelancing to a minimum because after those first couple of years or so, you can get to a point where you aren't learning nearly as much as you could while working on your own stuff. With freelancing, you get paid for what you know. With side projects, you can greatly expand what you know. Since college is generally a time where your living expenses are relatively cheap, this is a great time to focus on side projects rather than spending all your time on freelancing.
Keep in mind that programming skills are most valuable when they can be combined with deep knowledge of other domains. Most developers, especially those who are self-taught, know programming well, but not much else at a similar level of understanding. Consider topics such as statistics or other engineering / science fields. Get internships in areas which aren't programming. This will make you more valuable and will also give you a leg up on your ability to break into niche areas which don't have a lot of competition in delivering services if you ever decide to start a business.
Personally, I did horrible in school and freelancing ended up devouring me. So, I dropped out, stuck with freelancing and eventually moved abroad.