Em void* a, aé declarado como um ponteiro não para um voidtipo, mas para "qualquer" tipo (caso especial). Um endereço (posição na memória) é atribuído aa , como a qualquer outra variável sendo declarada, é claro.
Depois disso, a expressão &aé avaliada para inicializar a variável (também a, mas isso não é relevante) recém-declarada. O tipo de &aé "ponteiro para ponteiro para qualquer tipo", que é um caso especial de "ponteiro para qualquer tipo", totalmente compatível com o tipo dea . Portanto, nenhuma mensagem do compilador.
Corolário: não use void*se desejar uma verificação de tipo forte. Qualquer coisa pode ser convertida para ele. Exatamente o oposto na direção reversa, exceto paravoid* si mesmo (seria uma exceção desnecessária que um tipo fosse incompatível com ele mesmo).
Além disso, AFAIR isso realmente vem de C.