the solution for 1. is simple: call the mouse-move function twice before the grab function (only if not grabbed already)
that'll set the initial velocity to zero.
I don't really understand your problem in 2. It seems you do it the way you're supposed to (update mouse position, then update space).
What do you mean with "stepping the simulation"? You step the simulation every frame anyway. So just call the update func beforehand.