Ciao !
Allora..non ho ben capito quale sia il nesso tra il PHP e questo esercizio...che è un esercizio più rivolto allo studio delle reti logiche !!
Cmq...ad "occhio e croce" sembra essere sempre vera ciò la funzione logica che hai scritto.

Provatela a scrivere un poco meglio

il blocco a sx è la AND di abc
il blocco a dx quei negati fanno diventare il blocco una somma di somme negate [(!a+!b)+(!a+!c)+(!b+!c)]

{[(abc)]XOR[(!a+!b)+(!a+!c)+(!b+!c)]}

il blocco a sinistra ricordando che la AND è vera solo se tutti sono veri sarà vera solo nel caso in cui abc valgono tutti valore 1 ; ma quando abc valgono tutti e tre 1 il blocco a dx ha valore zero.

Essendo la XOR vera quando uno dei due è vero ma non contemporaneamente...la funzione è vera.

Nel caso in cui non sono tutti e tre 1 i lblocco a sx sarà sempre pari a 0 e il blocco a dx verrà sempre 1 , quindi anche in questo caso la XOR darà come risultato 1 , cioè vero.

Avrò fatto una confusione infinita...ma almeno ci ho provato !

PS. In che senso nn ti è chiaro l'uso di !
serve a considerare la variabile o l'intero blocco in complemento , negato...a=1 ; !a=0