There will be multiple ways to do this including scripting.
Here are two ways to do this.
This is a way to influence the values of one property using the values of another property.The driving property could be a bone in the same armature or any other object.
In your case for example you can get the X value of one bone to drive the Y rotation of another.
A quick summary of adding drivers from the WIKI
The common way to add a driver to a property is to RMB click a property, then add a driver via the context menu. Drivers can also be added by pressing Ctrl-D with the mouse over the property set. The selected properties will be used as a destination (output) for the driver.
Once added you can access then from the graph editor.
Using action constraint
Similar to drivers but uses an objects entire action (That is all the fcurves) to drive the target property.
Here is a summary from the WIKI
The Action constraint is powerful. It allows you control an Action
using the transformations of another object.
The underlying idea of the Action constraint is very similar to the
one behind the Drivers, except that the former uses a whole action
(i.e. a bunch a F-Curves of the same type), while the latter controls
a single F-curve of their “owner”...
Hope this helps