Feel free to define those however you want or think of better ones allowing for a better structure, so the following is my interpretation I am using in my own OpenGL based engine.
Model: Contains several meshes with their material (so when rendering I set a material and render the vertices supposed to use it as that is basicly how OpenGL wants it). It may also contain different LOD stages. It can be loaded from a file.
Mesh: One vertex/index buffer pair per mesh.
Node: A node is just a position in the game world which may be part of a more complex scene tree and be associated with one or more models/lights/cameras/...
Material: Holds a shader and render states and maybe some special shader variables or something.
Entity: Is a node with a model and a skeleton
Skeleton: A bone structure and pose also holding a pointer to its animation data.
The Animation is a bit tricky. I put my skeleton with animation data (only supporting skeletal animations) into the entity, as that allows me to have different animation states for different entities sharing the same model. For vertex based animations I would probably make them part of the mesh, storing some frame variable in the entity, doing the blending between frames in a shader.
When exporting an object from blender to my custom file format, the resulting files are skeleton and animation data and the model. The model is exported so that it contains a different mesh for each texture.
This is how I do it and there a probably better ways to handle this.