I'll put my bias up front: I went to one of the best cs school in the US, so the perspective I have and the opportunities I've seen available to me and others I know are not necessarily typical.
1) It is totally plausible to get a programming job with just experience. College just makes it easier to get your first few jobs for most tech jobs. Some require it, just like some tech jobs require a pH.d.
2) Well, nothing is needed since you can learn all the material on your own and software engineering jobs care more about your ability to perform than educational or professional certifications. The value of the courses you'd take isn't that you took the course, but that you learn what it covers. That said, at a good institution courses act as force multipliers for learning the material faster than you would on your own and the overall curriculum ensures that you will have the requisite base of knowledge to be able to do your job well or switch to a different job with relative ease.
You can get all the knowledge of a CS degree without going to school, since between berkeley, stanford, carnegie mellon, and mit, there are enough free courses with totally public material to learn on your own everything you would in their bachelor's program (eg all the projects and lecture slides for berkeley cs courses are publicly available. many classes have webcasted lectures). the only thing standing in your way is your discipline and amount of time you have to devote to learning.
However, college definitely makes getting your foot in the door easier. Internship programs at companies with an HR department usually require you to be a student. Most places large enough to have in house recruiters or a well defined hiring process are going to use college as a quick indicator of baseline competence for your first few jobs at least. Certainly there are ways around this, especially in tech, but there is still a privilege associated with have a bachelors.
3) Do you mean indie gaming? I don't think those people are swimming in money, and I don't think they care. Do you mean just freelancing? Perhaps, if you don't mind treating it like a business with all that entails and not just being the stereotypical programmer who hates anything business related that doesn't involve coding.
4) At many places, yes. Is it fair? No. Is it a good indicator for who would be a good hire? No. Will it still happen anyway? Yes. This effect goes away the longer you've been a professional programmer, but it gets replaced by a similar effect based on how the prospective employers perceives your past employers and jobs. If you go to a great school, then that cachet will follow you your whole career. It will impress people and open doors for you, because it indicates that you aren't a complete moron (it's very similar to the quip "No one ever got fired for buying IBM").
Now for stuff you didn't ask about that I'm going to tell you anyway based on some assumptions I made from your post.
1) Think long and hard about whether you need to be a game dev. There's a lot of people who want to be game devs. There's so many that the market is essentially saturated. That's bad for you because that means employers can pay less (compared to other programming fields) because employers can treat you shittier because they know there's tens of people jonesing to do your job. You will be paid significantly less as a game dev than you would as a programmer in just about any other industry, all other things equal.
If programming is just a means to an end of making video games, I totally understand. Go be an awesome game dev. But if you care about optimizing, even just in part, for compensation and good working conditions, at least look at other programming fields. There is lots of exciting and interesting programming stuff in fields outside of game-dev.
2) There are major differences in quality between the average CS school and a great CS school. If you can get into a great CS school, it is almost certainly worth it, even if you have to take out loan to do so (I'm assuming you'd be taking loans based on not being able to afford the school, not because your two doctor parents refuse to pay for your college, so you can't get any financial or reduced tuition). If you can only get into a decent CS school, well it might be worth it if you won't have any loans, but you'd have to look and see if the material they teach in upper division courses covers things you don't know. I wouldn't take out loans beyond about $35k total, though, in that case.
3) College isn't just about what you learn there, but who you meet. Who you know is just as important if not more important that what you know. True, to a larger degree than in other fields you still need to be qualified and capable of doing the job you get hired for, but unless you are one of the best in the world at what you do, there will be other people as qualified as you. If you have someone on the inside or a friend who can recommend you that can be the difference between getting a job and being passed over for someone else. The network you cultivate in college and early in your career will help you find new jobs and opportunities as you progress in your career. Usually the best positions and the best hires are never publicly available (ie applied/received via the careers page of the company website), but instead come from some internal recommendation.
4) The biggest "problem" I've anecdatally observed with people without a degree or who didn't go to a good school is a lack of background knowledge. That doesn't mean all people without a degree or with a degree from eg "Bob's trucking school and CS degree mill" will have that problem, nor does it mean that no one from, say, MIT will ever lack basic background knowledge. But on average, people without a degree tend to focus only on what they're interested in, so there are gaps in their knowledge. A degree gives, or at least attempts to give, you background knowledge.
Background knowledge is actually really important. Sure you don't use it everyday, but a lot of programming is pattern recognition, and the more background knowledge you have the more patterns you can recognize and solve efficiently.
EG, a few months ago, a friend who hadn't really focused on lower level concepts asked for some code help with optimizing some number crunching scala code on facebook. Within 5 minutes of chatting I'd helped him massively optimize the code because I realized the scala code was bogging down due to two if staements in the for-loop. My background knowledge of how CPU pipelines work, why branching can be expensive, and what compilers tend to optimize and not optimize fixed an issue he'd been working on for days.
TLDR: No, but it makes it much easier for the first half decade or so. No, but the better the college, the more it helps you acquire a job.
I know I said Game Dev, and games are a fun thing to program, but I honestly could be working on Foo or Bar and I'd have a good time with it.
You mentioned the MIT free courses and such - which believe it or not, I've done the majority of. I only bothered with MIT though because they had a lot of different courses and they were all reliable and in the same place. For a time I was interested in compilers and such, so I read the Dragon Book (Or a good helping of it. That's one ugly book). I've also read a few other technical programming books that I know you have to read in college. Despite this I think I'm leaning towards going to college now for many of the reasons you stated (background, networking, general knowledge). Thank you for your answer it is undoubtedly life changing.
if you've been through a lot of those courses and read the dragon book, then another reason you might appreciate college is that you'll be able to do research or take grad classes to fulfill undergrad course requirements.
Btw, if you care to see what they've got public here's the master list (note the years of archives in addition to the most current version of the class): http://inst.eecs.berkeley.edu/classes-eecs.html
1) It is totally plausible to get a programming job with just experience. College just makes it easier to get your first few jobs for most tech jobs. Some require it, just like some tech jobs require a pH.d.
2) Well, nothing is needed since you can learn all the material on your own and software engineering jobs care more about your ability to perform than educational or professional certifications. The value of the courses you'd take isn't that you took the course, but that you learn what it covers. That said, at a good institution courses act as force multipliers for learning the material faster than you would on your own and the overall curriculum ensures that you will have the requisite base of knowledge to be able to do your job well or switch to a different job with relative ease.
You can get all the knowledge of a CS degree without going to school, since between berkeley, stanford, carnegie mellon, and mit, there are enough free courses with totally public material to learn on your own everything you would in their bachelor's program (eg all the projects and lecture slides for berkeley cs courses are publicly available. many classes have webcasted lectures). the only thing standing in your way is your discipline and amount of time you have to devote to learning.
However, college definitely makes getting your foot in the door easier. Internship programs at companies with an HR department usually require you to be a student. Most places large enough to have in house recruiters or a well defined hiring process are going to use college as a quick indicator of baseline competence for your first few jobs at least. Certainly there are ways around this, especially in tech, but there is still a privilege associated with have a bachelors.
3) Do you mean indie gaming? I don't think those people are swimming in money, and I don't think they care. Do you mean just freelancing? Perhaps, if you don't mind treating it like a business with all that entails and not just being the stereotypical programmer who hates anything business related that doesn't involve coding.
4) At many places, yes. Is it fair? No. Is it a good indicator for who would be a good hire? No. Will it still happen anyway? Yes. This effect goes away the longer you've been a professional programmer, but it gets replaced by a similar effect based on how the prospective employers perceives your past employers and jobs. If you go to a great school, then that cachet will follow you your whole career. It will impress people and open doors for you, because it indicates that you aren't a complete moron (it's very similar to the quip "No one ever got fired for buying IBM").
Now for stuff you didn't ask about that I'm going to tell you anyway based on some assumptions I made from your post.
1) Think long and hard about whether you need to be a game dev. There's a lot of people who want to be game devs. There's so many that the market is essentially saturated. That's bad for you because that means employers can pay less (compared to other programming fields) because employers can treat you shittier because they know there's tens of people jonesing to do your job. You will be paid significantly less as a game dev than you would as a programmer in just about any other industry, all other things equal.
If programming is just a means to an end of making video games, I totally understand. Go be an awesome game dev. But if you care about optimizing, even just in part, for compensation and good working conditions, at least look at other programming fields. There is lots of exciting and interesting programming stuff in fields outside of game-dev.
2) There are major differences in quality between the average CS school and a great CS school. If you can get into a great CS school, it is almost certainly worth it, even if you have to take out loan to do so (I'm assuming you'd be taking loans based on not being able to afford the school, not because your two doctor parents refuse to pay for your college, so you can't get any financial or reduced tuition). If you can only get into a decent CS school, well it might be worth it if you won't have any loans, but you'd have to look and see if the material they teach in upper division courses covers things you don't know. I wouldn't take out loans beyond about $35k total, though, in that case.
3) College isn't just about what you learn there, but who you meet. Who you know is just as important if not more important that what you know. True, to a larger degree than in other fields you still need to be qualified and capable of doing the job you get hired for, but unless you are one of the best in the world at what you do, there will be other people as qualified as you. If you have someone on the inside or a friend who can recommend you that can be the difference between getting a job and being passed over for someone else. The network you cultivate in college and early in your career will help you find new jobs and opportunities as you progress in your career. Usually the best positions and the best hires are never publicly available (ie applied/received via the careers page of the company website), but instead come from some internal recommendation.
4) The biggest "problem" I've anecdatally observed with people without a degree or who didn't go to a good school is a lack of background knowledge. That doesn't mean all people without a degree or with a degree from eg "Bob's trucking school and CS degree mill" will have that problem, nor does it mean that no one from, say, MIT will ever lack basic background knowledge. But on average, people without a degree tend to focus only on what they're interested in, so there are gaps in their knowledge. A degree gives, or at least attempts to give, you background knowledge.
Background knowledge is actually really important. Sure you don't use it everyday, but a lot of programming is pattern recognition, and the more background knowledge you have the more patterns you can recognize and solve efficiently.
EG, a few months ago, a friend who hadn't really focused on lower level concepts asked for some code help with optimizing some number crunching scala code on facebook. Within 5 minutes of chatting I'd helped him massively optimize the code because I realized the scala code was bogging down due to two if staements in the for-loop. My background knowledge of how CPU pipelines work, why branching can be expensive, and what compilers tend to optimize and not optimize fixed an issue he'd been working on for days.
TLDR: No, but it makes it much easier for the first half decade or so. No, but the better the college, the more it helps you acquire a job.