You should probably stick with 2d unless you feel you understand the math fully ( from other posts it seems like you don't ). If you do then you can step up to 3d, however expect that you won't make anything like a real "Game" for some time. You'll have to make small basic demo apps and a lot of them in order to learn certain things.
As far as the openGL/DirectX question. There is 1 major difference between them, openGL is cross platform, while directx is Microsoft platforms only. So if your not on windows you have to use openGL.
If you are working only on windows then you get to choose, I would still suggest openGL but it really doesn't make much difference on windows only programming since the API's have similar features and perform the same tasks.
So I suggest openGL because you will learn an api that you could run anywhere, and also Valve has said openGL runs considerably faster than DirectX, as they ported their Source engine to openGL and it runs better. Plus if microsoft goes belly up DirectX dies with it.