One advantage to developing using Linux is that it\'s more likely that you will end up using open, cross-platform tools (e.g. it will be easier to make your programs run on Windows and Mac OS X). GCC (standard C/C++ compiler for Linux) is very widespread, cross-platform and fairly well-made.
Much of what you write will depend on the libraries you use - learning the basics of C++ is a start (and there\'s a *lot* to learn!) but if you want to write graphical games, interact with databases, etc, etc, you\'ll need to learn to use other libraries (in the same way that Planeshift uses CrystalSpace).
VB makes it really easy to get a running application which has menus, windows and buttons, but quickly runs out of steam after that

Learning to limit the scope of your projects is very difficult, but try to choose small projects for yourself which extend the limits of what you know (e.g. learning to use part of a new library, or some programming technique.)
If you (and others) wrote a large PC game, there are several approaches programming-language wise - one is to do everything in C++ (or some suitably fast compiled language). Another approach is to make the \"engine\" in C++ and then use a scripting language (e.g. Python or Lua) to provide specific behaviour - this is done in the open-source space game Vegastrike (I think they use python..). This is a more flexible approach, but managing the interface between the scripting and the main engine is another layer of complexity.
Anyway, good luck with your programming endeavors, I\'m certainly enjoying learning!