The question, in a nutshell, is if these things become clearer to a programmer as he advances in his career. Do complicated topics as the ones listed above (OpenGL, MySQL, advanced html sites) become easier to read, write and understand as you learn more, or does it just get more complicated as you go by? How can you combat this feeling that you're an ant in the programming world and this stuff is the foot about to squash you?

I'm going to take a slightly different tack than the other respondents; I believe that reading and writing code does in fact get easier as you do it more, and I'll demonstrate it with a simple analogy.

Think of when you first started playing sports. At the very beginning with the first sport you learned, basic coordination for the simple tasks of a single sport probably seemed really hard. As you got a little more experienced, you started mastering the simple tasks so that you didn't have to think about them any more, and you noticed that there were more complex tasks that you could pay attention to (like watching other players to predict their behavior).

Then, when you tried your hand at another sport, you probably found you weren't so far behind when you started out. Catching a basketball is much different than catching a baseball, but somebody who's mastered one of them will have a much easier time picking up the other than a person who's never done either one before. With your experience practicing a second sport, you discovered that the first sport gave you both specific and generic skills. Specific skills (catching a basketball) are useful only in their domain, but generic skills (tracking a fast-moving object approaching in three-dimensional space and developing a plan to deal with it) make you better at all related domains.

What does this have to do with programming? The first line of code you read exposes you to a world built on certain rules. You learned those rules (that language's syntax and idioms) as specific skills, but you also learned some valuable generic skills: understanding how computers operate internally, and how to express your intentions in a way a computer can understand. Each new language you learn gives you some new specific skills, but it also strengthens your generic skills and helps you see the patterns shot through all computer languages like mineral deposits layered along a canyon wall. Once you get really familiar with a few different languages, you start being able to recognize the "shape" of most any code, if you'll pardon the vagueness, even if you don't know anything about the language it's written in.

For instance, all three languages you mentioned (MYSQL, OpenGL, C++) have some common features:

It's possible to compute small parts of an algorithm separately and compose them into a complete solution later on

The computer usually requires some amount of general preparation before you can start working on your specific problem (creating a table, initializing a canvas, or perhaps loading common libraries)

Earlier statements take precedence and affect later statements, i.e. the computer starts at the top of the code and works its way down

The more programming you do, the more you'll realize that no matter what the ball is shaped like, it's still just a ball coming towards you, and you know what to do with it without having to think too much about it. All programming is about attempting to express your intentions in a way the computer can understand; learn enough and you'll start to be able to read the intentions instead of the code.

P.S.- Each and every time, when you finally start feeling like you know your way around, you'll run into something that absolutely breaks your brain and makes you feel like a rank beginner. That's what we love about this job, there's always something new to learn.