So the rules are:

Only user created Variables will have a .grad field (so b and c in your example will never have one).
When the Variable is created, its .grad is None.
When you call .backward() on a graph that contains this Variable, it’s .grad field will become a Variable containing it’s gradients and never go back to None ever.