There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers
4

You're right in saying that a game engine is abstracting away from the low level graphics APIs, but a fully fledged game engine does a lot more.

Game engines are intended to make everything with regards to game development easier. They do each have their own unique features, but generally they provide easy abstraction layers for graphics, audio, input, scene management, collision detection, maths and general useful utilities. Some provide wrappers and plugins for physics APIs and some even have some AI support (mostly limited to FSMs, pathfinding and - the current trend - behaviour trees). A lot of them support, and pride themselves, on cross-platform functionality.

A game engine's purpose is to make it easier for the user to create a game, without having to deal with the small annoyances in creating a game from scratch or having to install a whole bunch of libraries and writing your own wrappers for them to suit your game.

There are a lot of engines out there, but beware of the difference between a graphics engine and a games engine (For example, Unity would be a games engine, whereas Ogre would be a graphics engine).

I've got two books on the subject, but they provide a good overview on the subject:

3D Game Engine Architecture by David
H Eberly

Game Coding Complete by Mike
McShaffry

They're not too in depth as you would need several books on each component to get the depth of knowledge you'd need to create a full, professional game engine, but they explain the concepts very well, I think.

Engines are a tricky thing to get right. If you write a load of games, you'll find you have a lot of reusable code after a while which you can use to make your own personal engine to help you out. And having a lot of (complete) games under your belt is a lot more impressive than a single engine.

Adding to Ray's answer: Engines (Game, Graphics, Audio, etc...) not only make it easier to interact with the underlying APIs, but implement functionality specific to the game, ex: Shading model, 3D sound.

Specifically for Game engines: they manage game objects, resources (Memory, threads, all the other engines), and inter-module communication. They give the game stucture, scalability, and flexibility, which is essential for any non-trivial project.

I've written a detailed tutorial on what a game engine is - specifically in the context of the iPhone and Android platforms. I've included detailed descriptions with examples of the various parts of a game engine: UI, Graphics, Sound, Physics, Particle effects. The tutorial is available here: What is a game engine? . Hope it's helpful.