Here’s a good explanation of why the new Phases feature is useful.
Summary version: DVCS allow for history modification. Rebasing, combining changesets and various other things. If changesets have been shared (pushed), they should not be modified as it results in duplicates.
Phases helps with this by not allowing history modifications to take place on changesets marked as public. By default, any changeset pulled from elsewhere, or that has been pushed is marked public. Changesets you’ve committed locally are draft.
For Mercurial, it doesn’t support local branches. There is a new phase called Secret that will help with this. Keeping changes in a repo, but not exposing them to others either when a push is done, or when others try to pull.