разница между void * и auto * хотя бы в том, что первое это есть в теплом ламповом си, а второе это что-то новомодное и я не сильно в курсе. void * это некоторый абстрактный указатель (то есть нечто, имеющее размер достаточный, чтобы хранить произвольный указатель), с которым ничего особенно делать нельзя - разыменование void * это ошибка компиляции.