I soon want to be able to make a little game with C++, and I was wondering what knowledge/skills will I need to create a basic 2d game. By skills and knowledge I mean stuff like functions, vectors, pointers etc. You guys will probably say everything, but what are the essential things as well?
I think most likely you want to use SDK that is already out there to do graphics on your game. Let me give you names to search.
Windows GDI
DirectX Direct3D (better than the former one and meant to be used to make game)
OpenGL
If you are going to use Direct3D, I have some comments:
DirectX 9.0 and Direct 9.0c are differnt;
DirectX 9.0~Direct9.0c works on Windows XP while upper versions including DirectX 10, 11 can only be used for latest versions of Windows;
DirectX also works on XBox.
You also might want to know some techniques that are commonly used in game programming. Here is some keywords to search.
State Machine
Frame Rate
Game Object Manager
Game Object Factory
Debugging Tools
Message System
Game Physics
You might also want to play some sound in your game. FMOD API is free and easy to use. Try that out.
Basic calculations, vectors, events, a little bit of Physics knowledge... :)
Art, sound, music,... In short you should know every specific category that's related to game (2d game as you mentioned) a little bit of knowledge. It'll give you a new look. Don't fell it's too hard. It's only how to solve a common Math exercise... :) You can choose the DirectX as your primary target (Because it'll give you some basic but very important knowledge about game programming), then you'll be able to pick one of some Engines which is best for you. :)