Bones parent-child relationship on different axis
Try a transformation constraint on bones 2 and 3.  Transformation constraints take the transformation of one bone and use it to apply some arbitrary transformation to a different bone.  They're sort a poor man's driver.  (This is also something you could easily do with drivers.  Plenty of other ways too.)

Let's say you want bone B to move 1 unit in the positive X local axis when you move bone A 1 unit in its positive Y local axis.  Create a transformation constraint on bone B.  You want to affect position on both bones, so use "loc" (location) for both bones.  Map Y to X.  Set it to use local space for both bones.  Finally, enter a range of values for input and output; in this case, use 0 to 1 for the source Y and 0 to 1 for the destination X.

For the other side, it's the same constraint, except you want it moving in the opposite direction-- so map the destination to 0 to -1 in the X instead.