There are fundamentally two different ways to release software. One is time-based, the other is feature-based.
In a time-based release, all components of the release are given a deadline to be ready by - the release date. There are milestones coming up to the release date, such as Alpha, Beta, and Release Candidate (RC). These milestones give the components a chance to test for readiness. When the release arrives, only the components that are ready to release are included. Some components may be considered too important to leave out or are fundamental to other parts of the software working, so those are considered to be blockers. A blocker has the power to stop a release or have the schedule adjusted, which happens frequently during the milestones.
A feature-based release usually has a target deadline for the release, but all the features are considered to be blockers. All features of the release must be completed or removed from the feature list before a feature-based release is ready.