In void* a, a is declared as a pointer not to a void type but to "any" type (special case). An address (position in memory) is assigned to a, as to any other variable being declared, of course.
After that, expression &a is evaluated to initialize the variable (also a, but this is not relevant) just declared. The type of &a is "pointer to pointer to any type", which is a special case of "pointer to any type", fully compatible with the type of a. Ergo, no compiler message.
Corollary: do not use void* if you want strong type checking. Anything can be converted to it. Just the opposite in the reverse direction, except for void* itself (it would be an unnecessary exception that a type was incompatible with itself).
Also, AFAIR this really comes from C.