How to make parenting or child-of to vertices behave as they should?

When I parent something or use child-of to a vertex group with just one vertex, it’s a bit unstable, it wobbles a lot more than it should. To fix this, I instead parented to three vertices. Now, the animation is a lot more stable, but now there’s one extra problem.

For some reason, blender makes objects parented to triplets of vertices spin an extra amount about the triangle’s local-z axis. It does something similar with single vertices but I’m not sure why. I figure it could be because blender is applying the local z spin of all 3 vertices at once to the parented/child-of object, instead of only calculating the z spin of the average or center of the vertices, so I’m not sure how to fix that, it seems like something hard-coded into blender.

Hmm, not sure I understand the issue. What exactly are you animating for this to happen? What vertex parenting normally does is to make the pivot point of the child follow the location of the parent vertex, with the offset always being in global coordinates.

Could you post a blend file showing the issue?

In any case, what you always can do (as a last-resort big gun) is using a driver to control the child location. Make empties track the location of the parent vertices (to have a means to access these from the driver). Then you have complete freedom to specify precisely whatever tracking relationship you want.