In void* a, aest déclaré comme un pointeur non pas vers un voidtype mais vers "tout" type (cas particulier). Une adresse (position en mémoire) est affectée à a, comme à toute autre variable déclarée, bien sûr.
Après cela, l'expression &aest évaluée pour initialiser la variable (également a, mais ce n'est pas pertinent) qui vient d'être déclarée. Le type de &aest "pointeur vers un pointeur vers n'importe quel type", ce qui est un cas particulier de "pointeur vers n'importe quel type", entièrement compatible avec le type de a. Ergo, pas de message du compilateur.
Corollaire: ne pas utiliser void*si vous souhaitez une vérification de type forte. Tout peut y être converti. Juste le contraire dans le sens inverse, sauf pour void*lui-même (ce serait une exception inutile qu'un type soit incompatible avec lui-même).
Aussi, AFAIR cela vient vraiment de C.