What does it mean when a merge replication generation has no changes? According to MSDN,


  MSmerge_genhistory contains one row for each generation. A generation is a collection of changes that is delivered to a Publisher or Subscriber. Generations are closed each time the Merge Agent runs; subsequent changes in a database are added to one or more open generations.


Reading the above, it seems logical that all generations should have a number of changes. However, when I try to select rows from MSmerge_genhistory, I find a lot of them where the changecount column has a value of 0.

Do these rows indicate a problem? Why do generations exist if no changes are included in them?
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.