Classes themselves are actually not bad for beginners. Pointers and references take longer to get used to in my opinion. Both are immensely helpful in game development, whether it's 2d or 3d, indie or AAA.

You also might want to later on (After you learn classes, structs, pointers and references, and perhaps a few other things you need to learn) check out STL. It has some handy features.

STL stands for Standard Template Library. It's exactly as it sounds, a standardized library of various features and functions to make our lives easier in the long run. Every update with C++ adds something new to the STL, and C++14 (I believe) is said to be including the Boost library. If you don't have Boost, get it.

My advice would be to do what I did: Build simple games with what you know or want to know. Then rebuild, update, new project, update, new game, rebuild, ect, learning new things about the language and experimenting more and more with each iteration. A C++ reference manual wouldn't go amiss.

What I'm getting at is that there's no solid, "This is what you need to know to make games." list out there. You can pretty much make a game with virtually any combination of C++ facets, within reason.

I love the SDL library. It's a bit harder to learn in respect to Allegro or SFML, but it gives you so much more power and control where you need it.

You mentioned what kind of game engine you should choose for a game. For your first one, I don't think I'd be a bad idea to write your own engine. It's not difficult to make a simple one and it's a great learning experience for a beginner.

Just like Aleksandar linked, I highly recommend The C++ Guy to teach basic C++ and SDL/OpenGL.