C++ and OpenGL is really the way to go. Blender is a 3D design tool more than it is a game language. From what I understand, you can do some limited programming in it, but for flexibility's sake, you're going to want to use Blender just to design your 3D models, and a real programming language to write your game.
For my project, we're using Ogre3D as our graphics engine. It is extremely flexible, well documented (books have been written on it), and portable between different platforms, so ultimately, it can be used to write games on PC, Mac, and Linux. There are also a bunch of third-party libraries and interface very well with Ogre3D that can help you handle physics. Very helpful.
This is a frequently asked question on Daniweb's gaming forum. Make sure you read the posts more thoroughly before you post a question as broad in scope as that again.