I am not quite sure what non-manifold geometry is. I thought non-manifold geometry was just floating vertices and hole in a mesh. From my experience this is not always the case however. What is non-manifold geometry and what are the types of it and how do I avoid it? Is there a case where it is acceptable?
Non-manifold geometry is essentially geometry which cannot exist in the real world (which is why it’s important to have manifold meshes for 3D printing).
As JulianHzg points out in the comments, intersecting geometry (faces sticking through other faces) is not technically non-manifold geometry on it’s own. However it will often cause the same issues as non-manifold geometry, i.e. confused volume calculations.
Non-manifold geometry can be problematic, because it complicates some tools & operations:
Rendering of refractive effects
Among many other cases.
You might want non-manifold geometry in some kind abstract model (as non-manifold geometry cannot exist in the real world), or as an approximation of a very thin object (e.g. paper, leaves, etc.)
Common causes of non-manifold geometry:
Disconnected vertices and edges:
Areas with no thickness:
Fixing non-manifold geometry:
You can select all non-manifold geometry with CtrlShiftAltM.
Internal faces can be selected by pressing 3D view > Header > Select > Internal Faces in edit mode.
Loose geometry (elements without any other connecting elements) can be selected with 3D view > Header > Select > Loose geometry. Note that it only selects vertices, edges, and faces depending on the current selection mode.
Other useful tools for repairing non-manifold geometry:
ShiftG (Select Similar). This is often useful to select vertices with only one connecting edge, etc.
CtrlL (Select Linked). This is often useful in combination with Select loose and Select similar to select all geometry connected to the selected geometry.
W> Specials > Remove doubles Doubles, (multiple vertices in the same place) are usually non-manifold (not always).
Since a common cause of non-manifold geometry is lack of thickness, the solidify modifier can also be useful.