I'm 23, and you remind me of my self a couple years ago. I was taking classes but not really learning anything, so I decided to start learning on my own instead. It only took a year or two for me to become a pretty good. You seem to be doing something similar, so you're on the right track. You just need to optimize your learning process. Here's what you can (and should) learn:

1. Web Design
Web design, from a coding standpoint, involves HTML and CSS. Using tables for layouts is bad: use CSS instead. There are plenty of tutorials online, but I recommend getting started at http://www.w3schools.com and checking out their HTML and CSS articles. Then get involved in some communities, read blogs, etc. Look at how other people are laying out their websites, and imitate. Get tons of practice. Your goal is to make websites with very simple, standards-compliant HTML and CSS. The other part of web design is, well, design. I think the more websites you make, the better eye you'll have for design (you might also need some Photoshop skills), but this can take years of practice.

2. Web Programming
Once you can build static websites, you need to learn about the code that runs behind them. Start with JavaScript (start here: http://www.w3schools.com/js). After that, you'll need to learn about some back-end languages. I recommend starting with PHP (http://w3schools.com/php/default.asp). Use it to build a functional web application. It'll teach you a lot about how a back-end language can interface with the HTML you write. Chances are, however, your code will be a horrible mess all contained in a single file. Move on to Ruby on Rails, which will teach you a better way to organize your code in what's known as the Model-View-Controller framework. Heroku is a good place to go to host your Rails app. (If you want, you can use Python, Java, etc. I just recommended PHP and RoR because that's the path I followed.)

3. Database Administration
Most decent web apps rely on a database to store information. Learn SQL with PHP, and put some database functionality into your app. I recommend learning SQL before using Ruby on Rails (RoR tries to hide SQL from you, so it's good to know what's going on behind the scenes). There are also some NoSQL solutions, which to be honest, I haven't spent much time playing around with. I recommend sticking with the basics.

4. Server Administration
All the apps you write will run on servers, so it's good to know what's going on there. Again, this is an area where I myself am relatively weak, but here's my advice anyway. Go to Slicehost.com, buy the cheapest server they have ($20), and spend a couple days going through their articles. They are extremely helpful. Try to get a database running, and a Ruby on Rails app. You'll learn a ton about server administration, and about using Linux, too.

If you want, you can become an expert in any one of these 4 fields. Or you can be a jack-of-all-trades and become "good enough" in all 4 at once. I think this is really the way to go, because that "good enough" bar can be pushed pretty damn high. If you spend your time making real web applications that people can use, then you're bound to learn everything on that list.

Remember that Google is your friend. If you run into a problem, chances are someone else has run into it, solved it, and put the answer on the net. And communities are your friend, too. For example, spending a few hours in online web design communities would have taught you to use CSS instead of tables, and saved you weeks of time. You need to be persistent and resourceful, you need to both work intelligently and work hard, and you will learn a lot.

If you become a good web developer, finding a well-paying job won't be a problem. And unlike 99% of professions, a programmer can sit down at his computer and literally create wealth out of nothing. Hone your skills, put out a few projects, and you will have financial security AND personal freedom for the foreseeable future.

As for the rest of your post... The stock market is a loser's game; I think you should worry about investing later. And call me cynical, but there's truth to the phrase "money is power". Make money, put it to good use, and pat your self on the back. No matter what anyone says, at the very least having money will give you the time and security to do what you want. And Paul Buchheit's advice is good, too... without above-average drive and commitment, you won't be successful.