...togli il newline dalla stringa "code[]" prima di fare il confronto:
codice:
    char code[50];
    char i = 0;
        
    printf("Indovina la password: ");

    while (1)
    {
        fgets(code, 50, stdin);
        
        while( 1 ) // itero per l'intera stringa
        {
            if( code[i] == '\n' ) // se trovo il newline
            {
                code[i] = '\0';  // lo sostituisco con un terminatore di stringa "NULL"
                i = 0; // (...)
                break; // ...e esco    
            }
            i++; // altrimenti continuo ad iterare (passando al carattere successivo)    
        }
            
        
        if (! strcmp(code, "ciao ciao")) // ora non servono più i newline!
        {
            printf("ok\n");
            break;
        }
        else if (! strcmp(code, "uno"))
            printf("uno\n");
        else if (! strcmp(code, "due"))
            printf("due\n");
        else
            printf("Errata: riprova\n");
    }
p.s. se inserisci: "ciao ciao" utilizzando la fgets()
viene aggiunto un carattere di newline in coda alla stringa
quindi vai a confrontare "ciao ciao\n\0" con "ciao ciao\0"
e le due stringhe sono diverse.