The first point is stronger than it seems, at least for me. It is a bit like requiring a definitive title to a novel I'm starting to write before the first line is there.
Candidate branches for deletion: git branch --merged
The difficult part, I think, is on the one side realizing what power you have and how to use it, and on the other side plain discipline.
Do you think Da Vinci sat at his table and thought "let's invent the helicopter" (with a nice unique memorable name for his work in progress)?
I would rather imagine Da Vinci being supposed to draw some boring architectural work or even writing against his will to his great-grant aunt. And then a paper fell off his table, spinning away. And then I imagine Da Vinci drawing a spinning paper on the margins, and adding equations, schemas, and getting deeply inside this new project, which becomes clearer in his mind as he works on it, without ever having a name.
This is exactly why I hate deciding a branch name before some tasks and I love `git add -p` which allow me to add a bucnh of unrelated things in the work tree and extract the juice later.
http://pragprog.com/screencasts/v-jwsceasy/source-control-ma...
Editted to add "absolutely".
The only time I branch for personal projects is when it is going to be a truck-load of changes, which are going to be hard to forget.