I don't have a quick answer for #1, but for #2 look into creating a driven key (set driven key) from a custom attribute (e.g. gripperCtrl). For #3 you could create a point constraint (with maintain offset on) from number 1 to number 2 and another point constraint from number to your robot. Hope that gets you in the right direction.