The slowdown is from a memory leak somewhere that's preventing stuff from being garbage collected, but I haven't had much luck identifying where, although hearing that restarting the layout speeds it up is helpful to know.
Negating gravity was the main purpose for pre-step. There may be other uses, since the chipmunk library has it too.
Joints in the chipmunk library are velocity based, which means they change the connected bodies' velocity so that the joints match up. The pin joint in your capx from best I can tell does a better job than just setting the object's position. Without the pin joint you're just transporting a free-falling object, so the y velocity would always be increasing and make it swing more. Maybe you could pin to an immovable object and move that if you want the pin point to move.
With physics libraries it's generally better to constrain objects with joints than setting position and velocities. At least from what I've seen.
It already has angular velocity.
"surface velocity" may indeed be useful, I'll put it on the todo.
A kinematic body is just a body not affected by gravity, correct?
For that you just undo the gravity in a "pre-step" condition like so as I recall:
Apply force rect(0, -Self.Chipmunk.mass * Self.Chipmunk.gravityY)