It doesn't matter if the variable name is "a" or "antidisestablishmentarianismInitiator", the scope (pardon the pun) for confusion is still there:
I think the likelihood for duplication of names goes down, when the names are longer, but, of course you are right, in that the potential for problems still exists.
Only the implicit global should be initialised.
True, but I would describe the real variable as actual, rather than implicit. The extern statement says that the variable is defined in another file (the actual definition) but needs to be used in this file. The variable, then, should NOT be initialized in this header file. Initializing it in the source file that goes with this header file is another matter. I still wouldn't.