This is not a bug . The IK “Legacy” solver constraint over rides/ignores all other constraints when calculating an IK chain, especially on rotation limits . This has been the case with the IK constraint likely since the IK constraint was introduced . You have to go to the “Bone” context and tick on the XYZ rotation limit and copy/paste the limits you want to apply (you even get visual feedback in the 3D view) .
The IK “Legacy” solver constraint will calculate other constraints (with the exception of rotation) in a target-less IK chain (aka Auto IK), but only after the IK calculations have been done, making it less then optimal for animation .
Even the new iTaSC IK solver requires that you do this for rotation limits even though the iTaSC solver was added as one of last year’s (?) GSoC projects to enable other constraints on a bone in an IK chain to influence how the IK chain behaves mostly for more accurate robotics simulations (I haven’t played with it too much so I don’t know exactly how constraints other then rotation work with it yet) . You can access the iTaSC IK flavor via the Bone -> Inverse Kinematics and hit the name field with “Legacy” (on by default) written in it if you want to play with adding constraints (excluding rotation) .
Rotation is a special case with regard to IK solvers, since that is what IK solvers do (calculate how a bone rotates relative to the the IK target depending on the chain length) .
The transition to the 2.5X series has not added a whole lot of changes to the constraints side of the animation system . Not all unexpected results mean that there is a bug in the code .
Limit_Rotation_IK_legacy.blend (103 KB)Limit_Rotation_iTaSC_only.blend (103 KB)