I want to create kind of a puzzle piece mechanic where if the play moves an object near another it snaps into place, and I figure the best way to get the exact position of where it should snap is with a socket. how would I add a socket or if its impossible to add a socket how else would I go about doing this?
Without knowing the precise setup/hierarchy of the puzzle pieces, I would say add the socket to the mesh. Another way is to add an SceneComponent in your BP hierarchy. See for example the gun BP in the VR template, the GrabComponentSnap is used to snap the gun to the hand mesh.