When using the snapping function during a translation in a script, is there a way to know which object, vertex, edge, or face was used as the snapping target?
The problem here is that snapping is an interactive operation, so to what is snapped to is known inside of the transform operator somwhow. But operators don't expose their internal working data, and
bpy.context.active_operator.properties doesn't contain enough to find out (in particular if closest snapping is used, it may move your object to the same location for different snapping locations).
You can find the snapping co easily for snap to active, but it won't tell you which object nor which geometry element it used.
Would a scripted snapping modal operator help? Probably much slower than the built-in snapping, but that's probably the only way to know what is snapped to (requires a lot of final bmeshes in memory I guess).
Yes. You can know.
It largely depends on the viewport you're in or the user view you're looking from. I think it doesn't give any visual indication as to where it'll be going next or sort but when it snaps to a face, edge, and or vertex, it happens visually for you to see immediately