High level view
Engine clients are illustrated in the following picture:
There are two categories of games that might use engine's functionality. First (and the most common one) is games made with scripting language. These use engine extension APIs that provide convenient way to access engine level functionality. Some games however might already have large existing c++ based codebase. This kind of clients can use engine core services directly and "cherry pick" the functionalities that they see useful. Examples of this kind of services are e.g. audio functionality (OpenAL + format support) or virtual file system capabilities (e.g. direct reading from zip files).
Engine utilities are helper applications built on top of engine functionality. Example of such utility is fallout content extractor. Engine extensions should provide sufficient apis for this kind of utilities.
Editor can be used to generate engine compatible contents, e.g. map layout. Engine extensions should provide sufficient apis for editor.
Engine tests can test basically any aspect of engine, thus they might need access to several levels of engine APIs. In general tests should work as automated as possible.
You can proceed to the lower abstraction levels using the following links.