Documentation for scene object--particularly the aspects required to implement a custom renderer?

As I understand it, the way to implement a custom renderer for Blender is to write a Python wrapper around the renderer and then create a Python class that inherits from bpy.types.renderEngine whose render() method accepts the scene data from Blender as a parameter and then calls the renderer. Presumably if one wants to write a script to output a scene to a file format to use for rendering with an “offline” renderer, the process is similar, except here the script accesses bpy.data.scenes as a variable as opposed to registering a callback method like render().

Is there good documentation anywhere on how to navigate/parse the scene data passed to bpy? In the case of a rendering engine (one that renders within Blender, as opposed to reading a file), would the renderer itself need to be compiled with some type of header that allows it to manipulate things like mesh vertices, textures, etc. that are passed through the scene data object?