Branching in Mercurial allows developers to work independently on features or bugs without disrupting the mainline of development. There are two types of branches - anonymous branches that are created implicitly during cloning, and named branches that are explicitly created and managed. Bookmarks provide a way to track anonymous branches with names locally for easier workflow. Feature branching is recommended, with developers pulling changes from the main branch into their feature branch regularly to integrate work early and avoid merge conflicts later.