Solution for constraints - need help
Attempt to clarify what I wrote:

'Axle' is my short name for BezierCircle.004. You can display it's local axis by selecting it, going to the Properties window, Object tab, and enabling Display->Axis.  (Here I have moved display to the top of the tab.  It will normally be farther down)

You will see that the local axis are parallel to the world axis. Now do the same for the empty.  You will see that the empty's local axis are not the same. The Z axis of the empty points roughly in the direction that I meant by 'axis of axle'. (Here I've move the empty and the axle into local space.  The yellow axis are that of the axle, orange that of the empty.

Now rotate all of the objects on the world Y axis. The local axes still have the same orientation with respect to their objects, so the next time you rotate the rotation will cause the effect that looks like a reset.
Blend file with my version, which might not match your need: 

Notice the axis orientation.  The 'axle' and 'wing' have the same orientation as the empty. The Empty is the parent of the axle. The axle is the parent of the wing. There are two constraints on the empty: Copy (Y) Rotation and Limit Rotation.

It should be possible to arrange all of this so that only the rim has to be selected, but I didn't manage that.