A full copy of the production setup, running the next release with test data, where changes are checked before real users see them. Larger projects also use preview environments for individual features.
Testing only on a developer machine misses everything caused by real infrastructure: migrations, integrations, configuration, and load. Staging is where those failures are supposed to happen.
Every project gets at least a staging environment deployed automatically from the main branch, plus per-feature preview links for review. Client acceptance happens on staging, never in production.