Key Ideas
1Rect Collision. rect.colliderect(other_rect) — fast, checks two bounding boxes for overlap. The default choice for most objects.
2Circle Collision. Compare the distance between centers to the sum of radii — ideal for round objects like balls or coins.
3Mask Collision. pygame.sprite.collide_mask checks pixel-perfect overlap — slower, use only when rect collision is too imprecise.
4Hitbox vs Hurtbox. A hitbox deals damage (the attack); a hurtbox receives damage (the vulnerable area) — often smaller than the sprite image.
5Trigger Zones. A Rect with no physical collision response — just detects overlap to fire an event (checkpoint, level transition).
6Optimization. Only check nearby objects (spatial partitioning/broad phase) instead of every pair every frame for large object counts.