The slight lag you see when a sprite is positioned to the mouse is a pretty common thing encountered in games in general.
What happens is the sprite is positioned and the next vsync update the sprite is drawn. In that time the mouse could continue moving. In practice this delay is typically about a frame, but it can be longer if double or triple buffering is used as I recall which basically render frames ahead of time to help with performance.
One solution in C2 to have an image match the mouses position exactly is to use the "set cursor from sprite" action of the mouse object. Other software can do something similar.
Stuff like a windows app often use a different rendering pattern that allow things to be synced with the mouse exactly. Namely things are only redrawn when an event happens like a mouse move/click etc instead of at a regular rate of 60fps. Even then it's only part of the screen that gets redrawn, instead of everything.
Edit:
Going back to C2 the reason objects lag behind other objects they're pinned to is the the order the the pin behavior is run.
Say you have three objects A, B and C.
A is pinned to B and B is pinned to C.
Ok next you move C.
That frame first A's pin behavior runs first, but since B hasn't moved A isn't moved.
Next B's pin behavior is run and it's position is updated from C.
The result is A will lag behind a frame before getting in the correct location.
This is the problem with behaviors sometimes, and why events are better imo, because you can control when things are done exactly.