My own hit list:
The simple ones you must have:
color: colorize output from commands likediffandstatus, which makes it easier to assess.pager: browse long output a page at a time.fetch: pull, update and merge from another repo in one step.graphlog: display revision graphs in your shell, incredibly useful for looking at the branches in your log history.hgk: browse the repository with a graphical interface (see also TortoiseHg and Murky)
If you enable pager, you should configure it to not interfere with certain commands:
[pager]
pager = LESS='FSRX' less
ignore = version, help, update, serve, record
The intermediate extensions I highly recommend (and use frequently):
record: lets you interactively select hunks of files to commit – perfect for when you are in the middle of one set of changes, and you end up fixing something that should have its own commit.extdiff: configure an external diff tool (such as meld)share: have multiple clones use the same repo history
The Advanced extensions I would not be without:
mq: manage a stack of patches. Very powerful, allows layering of patches on top of the tree.notify: send email notifications when a repo is changed.rebase: reapply local changes on top of a new parent revision.largefiles: work with large binary files outside the hg store
All the above are bundled with Mercurial, and are stable and well-tested. I highly recommend all of them.
Non-core extensions worth investigating:
shelve: selectively put aside changes (at the granularity of hunks) and restore them.acl: selectively allow access to different parts of the repository tree
Superseded extensions and migrated to core (info from @durin42):
forestwas been superseded by thesubreposupport introduced in v1.3bookmarksis in core and always enabledtransplantis superseded bygraft, a core commandhisteditis in core as of v2.3, but is disabled by defaultinotifyis not recommended, as there is apparently a bug due to a race condition