Ok I fixed my first issue and it now correctly iterates through each song and also passes in the correct file sizes.
Here is the Updated Method.
% Recursive algorithm
burnCD( SizeOfCD, [Item|Rest], [Item|NewList] ) :-
song( Item, _, Size ),
burnCD( SizeOfCD - Size, Rest, NewList ),
burnCD(...