I'm afraid your description isn't of much use to me. I'll be going from the way that your mesh looks.
First: we're going to need clean bone axes. And you've parented your objects with bone parenting rather than bone(relative). So first thing I do is unparent all, fix the axes, reparent with bone(relative).
Now, let's add a bone to represent a bit that's unparented, and then label some points:
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/MtmTs.jpg)
Notice: ABC forms a triangle. Your description suggest that bones BA and DC should only be able to rotate in world Y axis, about points B and C respectively. We can do that, with a simple IK, but only by freeing up the position of one of these points-- only by allowing the length of BC to change:
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/ZcbvW.jpg)
If we do not allow the length of BC to change, then triangle ABC is fixed, meaning the rotation of DC is fixed, meaning that there is only one thing we can do with this structure, which is to flip FE and ED:
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/Inmmz.jpg)
But the structure and shape of your mesh suggest that AB is not of a fixed length. It appears to be a shock absorber that can change length. If we accept that F, C and B are all parented to some root bone, and that AB can change length, then this is what we can do:
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/Mepyr.jpg)
Bone is the control. It is transform locked in all but one axis.
Bone.002 has a 2-chain IK constraint targeting ikT (which is parented to root). Because of its axes and bend, it and its parent will only ever rotate in the proper axis, but we could IK lock these if we wanted.
![enter image description here](https://cdn.statically.io/img/i.sstatic.net/v7Okg.jpg)
ShocksStretch is parented to root and has a stretch-to constraint targeting stretchTarget, which is parented to Bone.002. ShocksDef is parented to it and has "inherit scale" disabled. The other half of the shocks is parented to ShocksDef.001, which is parented to Bone.002 and has a locked track constraint targeting the head of ShocksStretch.