Olá, Samuel, como vai?
Essa exclamação no final do Console.ReadLine não é um operador de negação lógica. No C#, ela é chamada de operador de supressão de nulidade. O que ela faz é informar ao compilador que, naquele ponto do código, você garante que o valor retornado não será null, mesmo que o método permita esse retorno.
O método Console.ReadLine tem como tipo de retorno string?, ou seja, uma string que pode ser nula. Isso acontece porque, em algumas situações específicas, como falhas na entrada padrão, o método realmente pode retornar null. Quando você escreve apenas Console.ReadLine(), o compilador avisa que existe a possibilidade de a variável receber null e ao usar Console.ReadLine()!, você está dizendo explicitamente: confie em mim, aqui não será null.
Então esse null não vira booleano e nem zero. Null significa ausência de valor. É diferente de uma string vazia "" e diferente de qualquer número. Não existe conversão automática de null para outro tipo nesse caso. A exclamação apenas remove o aviso do compilador, sem alterar o valor em tempo de execução.
Espero ter ajudado.
Siga firme nos seus estudos e conte com o fórum sempre que precisar.
Abraços :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado