hola josefina,
no se está perdiendo información. la variable que cambia su valor es lista, un puntero que apunta a la información que hay que cuidar. se afecta ese puntero, pero no la información a la que apunta. el siguiente código sí crea problemas; además de calcular el valor, coloca en cero todos los nodos de la lista.
function calcularNumTrucho(lista: ListaBin): Integer;
var
acum, pot: Integer;
begin
acum := 0;
pot := 1;
while lista <> nil do
begin
acum := acum + lista^.bin * pot;
lista^.bin := 0;
pot := pot * 2;
lista := lista^.sig (aquí mi duda)
end;
calcularNumTrucho := acum
end;
luis