there are basically 3 types of snapping
gridSnap - hold x
vertexSnap - hold v
curvesnap - hold c
by hitting the insertKey the manipulator enters editMode. which means you can instead of moving the whole selection, just move its pivot point. hit insert again and your selection moves/rotates/scales around the new selection pivot.
tricky thing with curveSnap is to get the manipulater very near the curve and then hold c, cause curveSnap only works within a very close distance of the curve.
you can do this also with components verts/faces/edges.. but! - the changed pivot is existing only until you hit q/w/e/r/t or select something else from your scene.
hope that helped.
everything starts and ends in the right place at the right time.