Because my projects are normally web applications that I want to develop locally and test on a remote server, I almost always keep up to date copies of all branches on the remote. The only exception would be if I doing a very vague proof-of-concept test.
So, if the repo you're pulling from is called origin and the branch you make locally is called mybranch, my workflow is:
1) Clone the repo from origin
2) Checkout a new branch
3) Push the branch to origin and set it to consider the upstream version with:
git push -u origin/mybranch
This means you keep the canonical version of every branch on the server, which has a couple of advantages.
You can easily see version history on my code hosting site, and you can pull a test branch from the remote onto a staging server to test it out there.
It also means that anyone else working on your project can easily view, check out and track merges to and from that branch.
If you've already pushed your branch to the server but not set it to consider that remote copy its upstream, use this:
git branch --set-upstream-to=origin/mybranch