How can I prepare a set of colors that should go together, and be able to apply them to different objects with a single click?
Within a node group, use an RGB input node and multiple colour outputs with colour variation nodes to get the variations you want in a group. Each material can then use the relative variation output from the group and when the main colour in the group is changed each use of the group will change to match.



For multiple colour groups in a scene, you could duplicate the group so that you have one for green, one for red...

Beyond that, you could look at drivers. Have a look at CGCookies Flexrig. The Flexrig contains custom properties to define the colour used for hair, shirt, pants and so on, with drivers reading the rigs custom properties to define the colour used.