Rigging telescopic pistons
So I figured this out while writing the question, so I'm just following up with my solutions here. 

Solution for telescopic piston:

The solution was mostly like the last attempt in my post/question, but with the sections/segments parented to the bottom bone and figured I could just remove the _Dist bones I had. Think I was just mostly over complicating things in my head.



First I did was make all the cylinders an equal length. Here each chrome cylinder is 0.6m And make a duplicate where I moved every part to it's retracted position, each section here moves down 0.59. 




The base/end parts are still made as before, base/end parented to respective _Loc bone with a Damped Track constrained to keep them pointed at each other. 
The Mid bones are parented to the Base to inherit rotation. 
Mid_01 has a Limit Distance constraint targeting the root/head of Mid_02.
Same with Mid_02 and 03 targeting the next bone.
Distance is of course set at 0.6 m to match the length of the sections.


Now this setup wont work when rigged in its extended position, it's just a bit easier to set things up when it's extended. So It's just to move everything down in edit mode. Also important to make sure none of the objects are parented to the bones when doing this. And moving corresponding bones/objects the same distance so everything still fits nicely together.



Screenshot showing it in edit mode, pose mode and only the mid sections, can become a bit cumbersome to deal with when there are many overlapping bones and objects. 



The Piston_End_Loc bone also has two Limit Distance constraints to keep it from extending/retracting further than the geometry allows. First one tells it that it can't go further than 3.9 m away from the Base_Loc bone. And the other to keep it from getting closer than 0.95 m 

Video of it moving

Now this works nicely, but this extends the the inner cylinder first and drags the rest out after it. Going by this video and some others, it seems it should be the other way around(found this just before I was going to post this..). 

This is easily fixable by just clearing the parenting on the objects and flipping/rotating the rig around. Then moving the constraints from the Piston_End_Loc bone over to the Base_Loc bone as they have now flipped places(renaming the bones should probably be done if to keep things making sense).

We then finally have a perfectly fine working telescopic piston.



A bit more advanced synchronized telescopic piston:

For the synchronized version I copied over everything except the mid sections. Base and End bones keep all of their constraints.



First I added the _CpyLoc bone to both Base and End, both parented to their respective bones. And moved the Mid bones to the top of the sections, instead of the middle as I did in the first version. This is because I want the top of the cylinders to always remain between the two _CpyLoc bones.

Previously when I copied location from the Base/End bones you would have to awkwardly tweak the position and size of things for them to fit together. 



Here I know that there is 5 sections so I can just set the influence on the second Copy Location constraint to 0.2, 0.4, 0.6 and 0.8. I've subtracted a tiny bit to accommodate the bevel/edge of the cylinder.

Video of it here.

And a video of all three variations



Hope someone finds this useful, and that this somehow makes sense.

Here is my Blender file containing all different versions.