May I warn you that you may find a difficult point in the middle of game programming. You have great ideas, but you aren't quite experienced enought to put them into practice. Start with the basics, and always think about what you need to know if you have a new game idea.
hmmm...your best bet for making a game engine is to use a new set of functions (such as collision, sound, graphics etc.) over existing libraries. For example, you could use OpenGL for the graphics, and use something like OpenAL for sounds. Collisions would need to be created purely by logic, either modifying existing code or making your own.
You could, for example, make an init. function for your game engine, which the programmer could call. But inside the game engine, this init. function would initialize all the libraries such as OpenGL and OpenAL or whatever. You could have sprite classes, model classes, and so on. All you really need to do is to make a new set of functions that incorporates all the other library functions, to make a game engine which has the power of all these libraries, but is a hell of a lot simpler to use.
Before you go off and try to make a game engine I would make little games such as tic-tac-toe and memory or other basic games that will help you structure a game and ones that are easy to go from command window to an OpenGL window.
I would say lots of people that try to make games at first think that they will be making a complex 3D MMO right off the bat but then find themselves having a hard time with lots of the basics. So try to build from the ground up and find some friends that have a common goal and learn together since it will be way easier to stay on track and get past hard parts.
(I started off making a Black Jack game in command line and then moved on to using SDL then GLUT and now I'm on just plain OpenGL making a chess game with a UI and other things)