First of, many of the term you've thrown in are not unambiguously defined without a clear context, e.g. the DCC or game engine.
- Meshes must be loaded once per object. (e.g "big_sword.mesh" should not be loaded twice from the file).
Yes, a mesh is a resource (like a texture, a sound, …). It need to exist only once in memory to be used for several game objects. This does not necessarily mean that there is no copy. For example, you may have a copy in system memory and a copy in GPU memory. Although often loaded from a file, a mesh may also be generated procedurally or by processing a template mesh (e.g. skinning on the CPU).
- Entities are basically 3d world transformations that represent loaded meshes?
The term "entity" is not clear. Nowadays with the popular ECS (entity component system), an "entity" very often means a game object. As such an entity (in combination with its components) is much more, not to say it can be everything. Of course, you can look at an entity class (i.e. the implementation of the basic concept) and see as little as an identifier. Perhaps you even understand "entity" as an instantiation of something within the world / scene.
Regardless of the definition of entity, I would never claim that "3d world transformations" do "represent loaded meshes". A transformation has a right on its own. It can be used to place a game object in the world / scene, and hence serve as spatial anchor where and how a mesh is located therein.
- Meshes can contain nodes and skeleton data [...]
Well, from a pragmatic point of view this may be true, but it smells like bad practice. A mesh is a resource in its own right; it can exists with or without a skeleton besides it. A skeleton is an utility to transform a mesh. It can exist without a mesh. … Bringing skeleton and mesh together is meant to create a binding. True, if a mesh is thought to be bound to a skeleton, the mesh often brings binding weights with it because the elements of the mesh (i.e. vertexes) are the targets of the transforms.
[…] while the nodes are "trackable" by the coder so that different meshes can be attached to them. [...]
In my engine such attachment possibilities are separate components of a game object. I use a GripComponent component as part of a game object that represent an item, and a GrabComponent component as part of a game object that can hold such an item. The GrabComponent has a transform that attached to a bone (of the skeleton), and when grabbing a link is established from the GrabComponent to the GripComponent, giving an extraordinary kind of parenting.
I'm not sure what exactly is the different between entities and nodes. Can anyone shed some light over this?
Hope the above explanation does so. If not, then please specify more exactly what your term "entity" means.