For the dog project, the Hairs Control Top is the target bone of the constraint Hairs Top TCS, which is set to World (Local is not checked), Relative, and Rotate mix 100%. This means at the constrained bones' rotation will be their unconstrained rotation plus the world rotation of the target bone.
When the skeleton scaleX is 1, the target bone world rotation is 6.29. The constrained bones are adjusted to be their local rotation + 6.29.
When the skeleton scaleX is -1, the world rotation is 173.71 (== 180 + 6.29). The constrained bones are adjusted to be their local rotation + 173.71. This points them 180 degrees from the direction you want.
This is working correctly, as designed. The world rotation (used by constraints, returned by Bone getWorldRotationX, etc) is affected by the skeleton's scale.
The easiest fix for the dog project is to change the constraint to use the target bone's local rotation, not the world rotation, by checking Local. Another way to fix it would be to use the absolute world rotation, by unchecking Relative, which works because the constrained bones' rotation is set to match the target bone rather than added to it. With the absolute world rotation the constrained bones will all point the same direction, so the mesh may need to be bound to the bones differently.