L'avviso indica che una variabile viene utilizzata una sola volta nella clausola dell'elenco di predicati (in questo caso la seconda clausola).
Perché ti avvisa di questo? Perché è più che spesso che hai sbagliato a digitare il nome della variabile. Il codice risultante quando si misspell una variabile è anche un programma valido di prolog, quindi il debugging sarebbe doloroso se non ti avvisasse.
Se non si intende utilizzare tale variabile (X), è possibile utilizzare invece una variabile anonima. Per usare una variabile anonima devi usare _ come termine invece di un nome di variabile.
Nel tuo esempio sarebbe:
list([]).
list([_|L]) :- list(L).