In maya I know there is a way to take a distance between two controllers (head and tail) divide ‘start up’ value by that distance and you get value for scale of the cluster that is in between the (head and tail), that way when I drag head or tail I get my cluster of FFD scale and thus body of the character squash just like in this example (https://www.youtube.com/watch?v=Pe-rrrpPpkY)
I hope I explained everything fine otherwise please ask questions.
Use a driver, you can read any value from any text box in Blender as a single property for a driver variable. I guess you need to do some manual reading on drivers first then we can help further. I am currently on holiday in Australia without my Mac but will be back at the end on November to help more if you are still struggling.
Looking at your second example, the most straight forward way is with a stretch to constraint. This uses just 5 bones(including the Root) and no drivers, just constraints. The “Mid” control bone is parented to the “Stretch” bone which scales to maintain the volume of the stretch(default for stretch_to constraint). Also the Mid bone is constrained to split the rotation of the Top and Base. This doesn’t take into account the example’s controls on each corner, but should get you started.