Check out these two 'Set driven Keys' tutorials by Kevin.
They should provide a good start!
This is what I'd do for the extensions...
Parent the bits:
Parent the hand to the forearm, the forearm to the upper arm, the upper arm to the shoulder.
Depends how much flexibility you want here, but I'll keep it simple'ish.
Select the shoulder, go to "Modify->Add attribute"
In the window, name the attribute something like 'Extension', start value 0, end value 20...You'll see where I'm going with this...'Data type' ->Float
You'll see that the shoulder now has an added attribute on the bottom of the list in Channel Box.
Now, make sure the arm is in the closed position (non-extended), make sure your Extension value is set to '0'.
Go to Animate->Set Driven Key->Set  (click on the box or tear off the menu)
Load the shoulder as the driver and the upper arm as the driven. In the driver keyable attribute window you will see the 'Extension' attribute, click on it. Highlight all the translate attributes in the driven
menu. Click on 'Key'
This tells the Expression attribute that at value 0 those translate attributes values are as you intend for the upper arm to be...
Next, move the upper to the extents of it's extension, and set the Extension value to 10. Click on 'Key' in the Set driven Keys window.
Now do the same for the lower arm, you're value at the end of extension should be 20. Now as you change the value of 'Extension in the Channel Box your arm should extend...!
(Hopefully I got all this right...Doing it from memory!)
You could add an attribute to each arm section say; Upper_Ext, start 0 - End 10. Lower_Ext...etc.