I’ve noticed this sometimes borks up the armature, why is that? where can I find more info about the roll angles?
No, it may bork the Action (because one IPO Chanel is out of sync with its neighbor(s)), but that’s because the Roll Angle was changed after the bone was posed).
Unfortunately there’s nothing much been written about Roll Angle. It’s a difficult concept to illustrate (write or draw pics), but not so difficult to understand.
If you look at your left hand, palm down, from above, and assume for this exercise that all four fingers have their X-Axis pointing towards the thumb and have a Roll Angle of zero (same as if you created an Armature in Top View), but the thumb would need a Roll Angle of about 90. So if you rotate the first digit of the fingers around their Local X (R-XX) they would go down perpendicular to the back of the hand, but if you rotate the thumb (Roll Angle 90 and again around the Local X) it would go Left, towards the fingers.
Ahh… but who bothers to pose bones like that? You just grab the IK Target and move it!. Well the Transform Matrix is divided into four chunks (I think? I’m not sure of this but it helps to think of it [or look at it] this way and if you actually test it in Blender it works), Bone Space (the structure of the bone including Roll Angle), Armature Space (the structure of the Armature = the sum of all BoneSpace), Pose Space (transforms relative to Rest Position = recorded changes in BoneSpace within ArmatureSpace) and World Space (the sum of all the above relative to the (transforms of) the Armature Object.
If all Bone Transforms were done in Local Space (G,R,S XX or ZZ) it would be a simple matter of setting the Roll Angle (YY) and making Axis Constrained transforms relative to that Roll Angle. Of course this would be a nightmare to set up and would completely fail as soon as Constraints (or Modifiers) were added.
Constraints are evaluated in Pose Space, so they can only evaluate (constrain) whatever came before (ArmatureSpace, which, in turn gets its info from BoneSpace, where Roll Angle resides). Roll Angle for every bone doesn’t have to be zero, but, at a minimum, the first (FK) bone in a constrained chain should be the only bone in that chain with a non-zero roll angle. A chain of (say) three bones, each with different roll angles will work fine with a simple IK Constraint, but as soon as you put (Locks or) Limits on, then those values are relative to the Zero Point of the Y-Axis, the Roll Angle (where the X-Axis is pointing to as it is rolled around Y). And then, when you add any other Constraint (PoseSpace again), especially if the Target is another Bone, it has to evaluate the BoneSpace (Roll Angle) and ArmatureSpace (where X and Z are relative to Y) of both Bones, check out what’s happened to them both in PoseSpace and only then write them to the Action (I’m not sure that it actually writes anything so let’s just say “draws them in the display”).
There was something else I was going to write but I forgot it; I’ll add it if I remember.