Parece que estuvieras trabajando con java, pero a su vez parece que estás mezclando código con pseudocódigo
laLista.esVacia() en principio es una invocación a un método que devuelve true si la lista está vacía o false si la lista no está vacía
Si quieres escribirlo como código java sería:
actual = laLista.esVacia(); De este modo actual queda con un valor true o false.
Respecto a la lista enlazada hay varias formas de plantearlo, la expresión unalista.cabecera : unaLista.cabecera.siguiente; también parece pseudocódigo y estaría diciendo que una lista está compuesta de dos partes: la cabecera que es un elemento individual de la lista junto a un puntero, y un puntero al siguiente elemento de la lista, que es el puntero que tiene la cabecera.
Lo que no tengo claro es si estás trabajando con java o con otro lenguaje. Si es con java el código que has puesto no tiene sentido, ni el interrogante ni los dos puntos.
Con java una lista enlazada recursiva en realidad no trabajaría con punteros. Supón que vas a crear una lista enlazada de enteros: declararías una clase donde sus campos serían
private Integer cabecera;
private ListaEnlazada<Integer> siguiente;
De este modo cada elemento de la lista está compuesto por un valor entero (cabecera) y por un objeto ListaEnlazada (esto es una estructura de datos recursiva, es decir, tienes dentro de la clase que declaras el mismo tipo de dato que define la clase: una referencia a otro objeto de la clase).
Si cabecera == null y siguiente == null la lista está vacía,
Si cabecera == un valor cualquiera y siguiente == una referencia cualquiera, estamos en un elemento intermedio de la lista
Si cabecera == un valor cualquiera y siguiente == null estamos en el último elemento de la lista enlazada.