Key Ideas
1Loading Images. pygame.image.load(path) returns a Surface. Always follow with .convert() or .convert_alpha() for fast blitting.
2Image Formats. PNG supports real per-pixel alpha transparency; JPG has none; use PNG for sprites, JPG for photos/backgrounds.
3Scaling & Rotating. pygame.transform functions return a NEW Surface, never mutating the original — cache results instead of transforming every frame.
4Flipping. pygame.transform.flip(img, flip_x, flip_y) mirrors an image — common for facing direction changes.
5Alpha Channel. set_alpha(0-255) fades a WHOLE surface; convert_alpha() preserves real per-pixel PNG transparency.
6Asset Organization. Load every image once at startup into a dict; never call pygame.image.load() inside the game loop.