You can find a concrete example of code in the XML loader of the sprite 2D mesh, ie in plugins/mesh/spr2d/persist/standard/spr2dldr.cpp, in csSprite2DFactoryLoader::Parse().
The process is basically the same for all type of meshes in CS:
You must first get an access to the plugin of the sprite 2D mesh:
csRef<iMeshObjectType> type = csLoadPluginCheck<iMeshObjectType>
(object_reg, "crystalspace.mesh.object.sprite.2d", false);
Then you create a factory for the mesh:
csRef<iMeshObjectFactory> factory (type->NewFactory ());
In order to setup the factory, you get an access to the iSprite2DFactoryState interface:
Then you setup the vertices and other parameters of your factory through that last interface. The sprite 2D mesh implements also the iParticle interface, you can grab a pointer to this interface and setup its parameters in the same way.
Once this is done, you can now create instances of meshes, and personalize them if needed:
csRef<iMeshObject> mesh = factory->NewInstance ();