La advertencia le indica que tiene una variable que se utiliza sólo una vez en que la cláusula de la lista de delitos (en este caso la segunda cláusula).
¿Por qué se le avisa de esto? Porque es más frecuente que haya escrito mal el nombre de la variable. El código resultante cuando escribe mal una variable también es un programa de prólogo válido, por lo que la depuración sería dolorosa si no lo advierte.
Si no va a utilizar esa variable (X), se puede utilizar una variable anónima en su lugar. Para usar una variable anónima, debe usar _ como el término en lugar de un nombre de variable.
En su ejemplo sería:
list([]).
list([_|L]) :- list(L).