You might want to start with 2D or you may never get anywhere.
I like Pygame because it's simple and intuitive to code and read, especially when you're wanting to focus on game design concepts and physics, not unimportant low-level code details, but you could just as easily use SDL in C++. OpenGL is viable but far more annoying, not least of all because it doesn't handle audio and input.
The first game you code will not be your best game, or your most fastest game, or your most well-coded game, but it'll be the one you learnt the most from. Don't expect it to be something you can sell