I mainly use magit for reviewing changes, staging and committing. I haven’t found an interface that compares for staging and discarding hunks. But checking out branches I do on the command line and I use Meld for resolving conflicts.
Just in case you have a longer workflow, checking out a branch should just be `b b` and then select the branch from a list with typing or up/down.