What is the difference between the contact constraint and the offset constraint? It seems to me that the contact constraint is simply a subset case of the offset constraint with 0 (zero) offset.
Another difference is the Contact constraint forces the faces to be in opposite directions, but you can choose opposite or same direction with an Offset constraint.
Yes, Contact constraint also offers the possibility of point contacts and line contacts, for example between elements like cylinders, cones, spheres, and flat planes.
Offset constraints pretty much apply to points, lines, and planes only.
The Catia Help Docs do a pretty good job explaining this