I don't think the bug is in the code you linked. From the debug view in the video it seems that the attachment point of the revolute joints are at the bottom & center. I ran some tests on Demo4 from the AdvancedSamples and it all seems fine (using revolute
joints - the first chain to the left)
Have you tried using pinjoints? they are two revolute joints with a fixed distance between them. You simply attach the pin joints at the ends of the geometries and set the target distance to be a small value. As for the rope: Chains are rigid and ropes are
elastic. You should use joints in chains and springs in rope. Using elastic rope will have a bouncing effect (bungee jump alike) - the elasticity of the springs can be controlled using damping and other constants.
As for the shooting of rope. It should be straight forward if you don't have intercolliding links (no geometries in the rope). Attach a grappling hook to the end (a circle geom) of the rope and apply a great impulse to that body. When it collides with something,
attach the two geometries using a pinjoint.
Sounds like a lot of fun with grappling hooks - be sure to keep me posted on your progress :)