A mesh object stores the geometric elements of a mesh. More precisely, Netgen stores volume elements and surface elements. In Netgen/NGSolve, a mesh is usually generated by the automatic mesh generator Netgen from a given geometry object. To allow for geometry-based refinement, or geometry-adapted curved elements, the mesh object has a reference to the original geometry.
Indeed, we have two Mesh classes, one in Netgen, and one in NGSolve. The Netgen mesh is generated from the Netgen mesh-generator. If we want to adapt the mesh, we can modify the Netgen mesh by directly adding elements to it. It consists of 3D, 2D, 1D and 0D elements. The NGSolve mesh is a wrapper around the Netgen mesh. It does not store big data, but it provides a view of the Netgen mesh. The elements in NGSolve are understood as volume elements or surface elements (i.e. elements of co-dimension 0 or 1).