Algoritimo
Agora o porque de sempre aparecer que são diferentes é a seguinte:
Vamos simular a sequencia de execução do programa.
1) Digitar o 4 valores: num1 = 1 num2 = 1 num3 = 3 num4 = 4
2) Teste das condições: if (n2 == n1) = TRUE
Opa, primeiro e segundo numero são iguais. Executa a próxima instrução.
if ( n3 == n1 ) = FALSE
Os dois números são diferentes. Pula a próxima instrução.
if ( n4 == n1 ) = FALSE
Os dois números são diferentes. Pula a próxima instrução.
if ( n2 == n3 ) = FALSE
Os dois números são diferentes. Pula a próxima instrução.
if ( n2 == n4 ) = FALSE
Os dois números são diferentes. Pula a próxima instrução.
if ( n3 == n4 ) = FALSE
Os dois números são diferentes. Pula a próxima instrução.
Perceba que o else, é o "senão" do último if. Ou seja, a menos que a condição do último if seja verdadeira, ele sempre vai executar a instrução após o else.
Entendeu? Vai ser executado tudo sequencialmente.Um após o outro, inclusive o cout diz que todos os números são iguais.
Acredito que você tenha tentado utilizar "if's" aninhados, mas para isso precisaria utilizar as chaves({}). Pois, if sem as chaves, é condicional apenas para a linha seguinte.
if