OpenGL right after ASCII kindergarten? Oh boy. Save that for next year.
Here is a list of libraries I've used with C and C++: All of them are cross-platform. SDL supports more platforms than anything I've ever seen (there's even ports for things like Dreamcast and the PSP) but all of these run on at least Windows, Linux and Mac.
- SDL: Simple DirectMedia Layer is a library for handling 2D graphics, audio, and input. It doesn't call itself a game library but that's what most people use it for. It's a bit low-level though, it leaves a lot of things up to the programmer, but there are extensions that simplify things. SDL_gfx lets you to draw primitives (circles, lines, squares, etc.) and rotating/scaling images, SDL_image lets you load a variety of image formats (SDL only natively supports bitmap files (*.bmp)), SDL_mixer has all the audio functions, SDL_ttf is for rendering text using Windows font files (*.ttf), and SDL_net does all the networking, including TCP and UDP protocols. Also, you can replace the SDL graphics API with OpenGL when you reach that level without much difficulty. OpenGL is just for graphics, so a lot of people do this to take advantage of SDL's audio and input functions while doing 3D games.
- Guichan is a GUI library that works with SDL and a few other libraries. I haven't used it much so I can't tell you a lot about it, but check it out.
- Allegro is similar to SDL. It has basically the same functions. They're like Coke and Pepsi. The main difference is that Allegro has an MS-DOS port, so if you're a retro fan you may want to give it a try.
- Lua is a scripting language and library. When you're making a rather complex game, for example, at some point it gets boring having to re-compile the whole thing just for changing one little variable. You can make all the stuff that changes (like weapon or character attributes, dialogue, etc.) in a Lua script which your program loads and just change that, no need to recompile.
- PDCurses is a ncurses port for Windows (and MS-DOS). It's for making more complex console apps. With the standard C routines you can't do things like plotting a character on a specific point in the console window or changing text color, but ncurses can.
- libxml is a XML parsing library. XML is a standard format for storing data as text. It's quite useful if you're too lazy to design your own binary file formats and helper tools for making data in such formats.
- Irrlicht is for 3D games. OpenGL is low-level like SDL. The reason SDL is easier to use than OpenGL is because programming in 3D is a lot more complex than 2D. Irrlicht lets you make 3D games with about the same level of complexity as SDL. It has many features like loading several model formats (which you would have to do by yourself in OpenGL). I haven't digged much into it, but it's worth mentioning.
- wxWidgets is for making graphical GUIs. Native windows though; it's different from Guichan because Guichan draws everything inside your game window. Yeah, you can use the Windows API for this, but wxWidgets is way more intuitive (the interface is object-oriented) and, as I said above, it's cross platform. A lot of programs written originally for Linux that now have Windows ports use wxWidgets because it's so easy to port. It also has a networking library, an XML parser and like a dozen other things I that may be useful in some cases. (Note: Remember SDL? There's supposedly a way to connect SDL into a wxWidgets window in case you're too lazy to make your own interface system by hand in SDL.)
If you were to make an instant messenger, all you'd need is wxWidgets. Or you could use the Windows API for graphics and WinSock for networking, but I'd only do this if you need your program to work fast on older computers (wxWidgets can take quite a bit of resources).
Good luck on your journey! :)