Quick answer: Pygame collide_mask using the unrotated mask after sprite rotation? Mask is built at construction; rotation doesn't update the mask - rebuild after rotate.
Rotated sprite's mask collides with original orientation, not rotated.
Rebuild mask post-rotate
After pygame.transform.rotate, regenerate the mask from the rotated image.
Or pre-rotate masks
For known rotation angles, pre-build masks per angle. Lookup; no per-rotation cost.
Use bounding circle
For frequently-rotated objects, circle collision; rotation-agnostic.
“Masks are per-image. Rotation creates new images.”
If your game rotates sprites, the mask rebuild discipline is mandatory.