Feature branching allows developers to work on user stories or features independently in separate branches without blocking the main trunk. This prevents an unstable trunk and allows incomplete stories to be finished after a release by merging the feature branches later. Developers can work independently in branches and merge completed features into the trunk for a release without blocking other work.