What you're asking for, and showing with your pic, sounds a lot like the behavior of bones with a clamp-to constraint.
These four bones, parented unconnected in a row, each have the same, copied clamp-to constraint that keeps them clamped to the curve, without affecting their rotation.
If I duplicate this structure, then add damped track constraints to the bones, I get this:
The heads of the bones are clamped to the bottom curve, while the tails point to the top curve. Note that I have to specify where on the top curve they point, with the top four bones. These four bones couldn't be parented directly to the bottom four bones, because that would involve a dependency loop, but both could be parented to the same (unpictured) bone, so that bone slid them along their respective curves from the same controls.
Note that the bottom bones don't reach the top curve, they only point at it. In order to reach the top curve, you could add stretch-to constraints for the bottom four bones.
Finally, be aware that tails don't mean very much, not as much as they seem to. The location of a tail has absolutely no effect on deformation-- any unconstrained bone will rotate, scale, and translate in the exact same ways, regardless of where its tail is located. Tails are useful only for controlling local bone axes and for use with some constraints.