Oi Victor, tudo bem?
A documentação do PHP explica que a comparação var_dump(100 == "1e2"); é considerada verdadeira porque o PHP faz uma conversão implícita do valor da string "1e2" para o número 100. Isso ocorre porque a string "1e2" é uma notação científica que representa o número 100. Portanto, quando você compara 100 com "1e2", o PHP entende que ambos os valores são iguais.
Por outro lado, a comparação var_dump(0 == "a"); é considerada falsa porque o PHP não consegue fazer uma conversão implícita do valor da string "a" para um número. Como a string "a" não representa um número válido, o PHP não consegue comparar o valor 0 com "a" e retorna falso.
Em resumo, o PHP realiza conversões implícitas durante a comparação de valores, mas nem sempre é possível converter uma string para um número.
Um abraço e bons estudos,