However, I forsee a problem. Arduino's analogWrite () fuction only has 256 levels (on basic Arduino like Uno). This may not be enough for the subtle gradual changes you need over long periods. Also the atmega chip in Arduino can only run perhaps 10 leds unaided. Try it and see what you think. If you need finer control over light levels and drive more leds, I would suggest a chip called TLC5940. Arduino can control this chip to run up to 16 channels with 4000 light levels and can power many more leds. There is an Ardino library that makes using this chip easy.
Two of the Arduino PWM pins can have 16-bit accuracy. This seems ideal if there's only two groups of lights.
analogWrite() won't do it, but it's very simple to write the timer values manually.