First just to clarify, an ‘object’ primarily represents a location, rotation, and scale in 3D space (think of an empty and what you can do in object mode). A mesh is a collection of vertices connected to describe, a surface and you can edit it in blender’s edit mode. A mesh is linked to an object so that it can appear in the 3D Viewport with the location, rotation, and scale of that object. The mesh itself may have things applied to it such as a material and modifiers (look at the outliner heirarchy).
Every object that is duplicated with shift-d creates a new object with a new, unique copy of the mesh. By default the same things that were applied to the mesh you copied are applied to your newly duplicated mesh, but you could change that. The mesh is independent and you could apply a different material and modifiers if you wanted.
If you alt-d you create a new object linked with the same mesh. Because it uses the same mesh data, whatever form the mesh takes and whatever is applied to the mesh will occur in all instances of it. You haven’t created a new mesh, just linked a pre-existing mesh asset to a new object (location, rotation, scale).
I don’t believe you can have an object with multiple meshes, although theoretically it would be nice if you wanted to change things like the materials and modifiers of specific parts of a mesh while keeping the same object.
The current ui can obscure these concepts so hopefully clarifying these things to users is in the cards (for example having a properties panel that is specific to what you click and not showing everything on an equal level).