Is there a way to rotate the axes themselves?
Yes, if one fits your needs you can use a different transform orientation. If not, you can create a custom one.
Other transform orientation systems can be selected in 3D view &gt; Header &gt; Transform orientation:

Note that to transform a selection along the orientation set in 3D view &gt; Header, you need to press the axis key twice, e.g. RYY. Otherwise Global coordinates will be used)
View
The orientation for the View setting is controlled by the angle of the view. See the wiki:

The manipulator will match the 3D view, Y → Up/Down, X → Left/Right, Z → Towards/Away from you.
This way you can constrain movement to one View axis with GXX.

You could use two 3D views, one to define the transform orientation, and another to actually view and interact with the scene.
Local
You could also try using local coordinates, which is defined by the rotation of the selected object(s). See the wiki:

The manipulator matches the object axis. Notice that, here, the
Manipulator is at a slight tilt (it is most visible on the object's
y-axis, the green arrow). This is due to our 15º rotation of the
object. This demonstrates the difference between local coordinates and
global coordinates. If we had rotated the object 90º along its x-axis,
we would see that the object's &quot;Up&quot; is the world's &quot;Forward&quot; -- or the
object's z-axis would now be the world's y-axis. This orientation has
an effect on many parts of the interface, so it is important to
understand the distinction.

Custom
You can also define arbitrary custom orientations based on the orientation of existing geometry, see my answer here.