What does it mean when a merge replication generation has no changes?
A generation with 0 changes is not indication of a problem. It is just indication that the generation contains no changes. 

If you look at the statement you quoted from BOL, it reads "Generations are closed each time the Merge Agent runs", so this means that the Merge Agent could run and close the generations with no changes if no changes were performed on the publisher and/or subscribers.