Visit some programming challenge and competition sites like TopCoder, CodeEval, and Project Euler.
What API's you need depends on what you want to do. The boost libraries are essential. If you want to develop forms applications, Qt makes it easy, but there is also the .NET framework and Win32 API. If you want to access databases, you might look into ODBC. If you want to read and write XML files, look into some XML parsers. If you want to write 2D graphical games, try out Direct2D. With physics, look up Box2D. With sound, try XAudio2, fmod, or OpenAL. Want 3D graphics? Learn some DirectX and/or OpenGL. Want to make your own 3D models for your simulation programs? Download Maya (which has a C++ API you can use to write plugins).
If you're compiling for Windows, you might as well use Visual C++, especially since Visual Studio's IDE contains some awesome debugging features (and extensions). If you want fully standards-compliant (without Microsoft extensions), use gcc.
Ultimately, however, you'll need to go to school if you want to make a career out of programming. If you don't, then I don't see why you'd bother investing so much time and effort into learning this much about software development. From my experience, public universities are rather lacking in depth with their CS/SD degree programs. If you can afford it, you should find a good school that specializes in tech-related fields and has a strong curriculum for software development. If you don't want to go to school for it, then I'd suggest you redirect your focus to whatever it is you ARE going to school for.