inflatable window curtain that inflates/deflates based on light

I like your idea,
but I can see a couple of problems:

  1. I can see 40 inflatable elements in your pdf. so you need 40 inputs for the light sensors and 80 (40 forward and 40 reverse)) outputs for the fans. An arduino does NOT have all those pins, so you must resort to some sort of multiplexing or use multiple arduino boards.
  2. you need a way to know when the element is fully deflated so the fan can stop, otherwise it will be constantly on. Probably you could just stop the fans after a set time.
  3. it will be probably not enough to just read the sensor and start the fan.. imagine a windy and cloudy day, with clouds passing in front of the sun very quickly, or imagine it is night and a car pass by with headlights on. your fans would be very busy starting and stopping and reversing all the time. So you need some kind of "smoothing" of the signal, maybe a moving average

As for your questions, LDR are very easy to use and you can find plenty of code for that in the forum.
for the fan control you will need something called "H BRIDGE" to be able to reverse the motor, but if you are planning to use the sort of fans that are commonly used in computers cooling, be aware that a lot of them just work in one direction (i.e. if you reverse the current they simply do not move) so be sure to test one before you get them all.

Another thought is... when you stop the fan the air in the inflated bag will come out and deflate the bag anyway, so do you really need to reverse the motor? or could you use some sort of weak elastic structure pushing the bag flat when not inflated? if you could avoid the reversing, it will make things easier and you will only need a MOSFET to switch on and off the fan
hope this helps