You are correct.
CC3MeshNode object is rendered with its own GL draw call. So, if you have a large number of individual node objects, you will consume CPU time making GL draw calls. However, the transformation of each vertex in these models is handled by the GPU very efficiently.
On the other hand, a large number of mesh particles held within a single
CC3MeshNode (the emitter), are rendered as a single GL draw call. However, since only one transform matrix can be applied at the time the draw call is made, transformations to the vertices of each particle must be made directly within the mesh, by the CPU.
Hence the tradeoff.
With individual nodes, you save CPU time by not transforming individual vertices within the model mesh, because the vertices are transformed by the GPU using the transform matrix of each node, but you spend CPU time making one GL draw call per node.
With mesh particles, you spend CPU time transforming individual vertices within the emitter model mesh, but you save CPU time making only one GL draw call to render all of the particles.
The other aspect is memory. When copying a
CC3MeshNode, the mesh itself is not copied. Only the transform info of the node is copied (and can then be changed). A hundred copies of a single node will all share the same underlying mesh, which saves memory. On the other hand, an emitter full of 100 particles actually holds 100 copies of the particle mesh, because the vertices of each particle must be transformed in memory before the draw call is made.
In the situation you describe, a large number of small static models, say for example, a city scene containing hundreds of individual building models that don't move around, then it will probably be best to combine all of the building model meshes into one large city mesh, and draw them all in a single GL call. A particle emitter can help you organize this, although you will simply "emit" all the buildings at once.