Is NULL guaranteed to be implicitly converted to the type on the left? [...]
Yes.
According to section 6.3.2.3.4 of the ISO/IEC 9899:2011 C programming language standard:
Conversion of a null pointer to another pointer type yields a null pointer of that type. Any two null pointers shall compare equal.
and to section 6.3.2.3.1
A pointer to void may be converted to or from a pointer to any object type. A pointer to any object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer.