Não cheguei a ler todos os tópicos por serem muitos, mas o código do exemplo utilizando if ... if não retorna nenhuma mensagem se a pessoa for maior de idade mas não possuir habilitação, isto se dá pelo fato de se a pessoa tiver +18 anos e possuir habilitação, ele retorna a mensagem "Pode dirigir", e se a pessoa for -18 anos, o programa retorna a mensagem "Não pode dirigir", mas se a pessoa for +18 anos e responder a segunda pergunta com "N", o programa não retorna nenhuma mensagem. Ele só retorna as mensagens em todas as situações utilizando o if ... else.