Vegetronix sell some very nice looking soil moisture sensor probes. They aren't cheap, but would save quite a bit of work creating your own. Being a cheapskate I preferred to make my own resistive sensor using a couple of stainless steel skewers, and that's working fine but took quite a lot of trial and error to figure out how to get a reliable and consistent moisture reading.
If you want to control a number of watering systems you can either use a common supply with a separate solenoid valve for each outlet, or a pump for each output. I found a supply of small, cheap immersible pumps that will run off anything from 3V-12V and they're working well for me so far, so that's the approach I'd recommend, but I've seen the solenoid valve approach work well too.
I used an H-bridge driver shield to run the pump just because I had some available, but this has limited me to two pumps per shield. You really only need a relay per pump and there are relay shields around that support four or more relays on a single shield. This would probably be better for you.
You will need to decide whether your fans and heater will be mains powered or low voltage DC. Low voltage DC will be much easier and safer to implement but mains voltage units will make it easier and cheaper to achieve higher power levels. If you're using mains voltages you would really want to use a commercial switch to control them from the Arduino, and they aren't cheap.
Opening and closing a sunshade is no harder than controlling any other motorised actuator and the main challenge would be in the hardware selection and assembly for the actuator. For example, you might use a geared motor to turn a pulley to pull a string to raise and lower the blind.
What you're describing so far could be done on a UNO or similar. If you have ambition to scale this up a lot then Mega based Arduinos have more pins and more memory. Personally, I think I'd prefer to see multiple autonomous Arduinos each controlling one subsystem, rather than one huge one controlling everything. This way you can get one system started and then take on additional projects to add new features without compromising the stuff you have already got working. If you choose something like a UNO as your standard platform, that also lends itself to use a wide array of standard shields for add-on features and sensors, as well as being handy for things like robotics if you decide to expand this interest into other areas.
If it's practical to incorporate a PC into your solution, I'd suggest that rather than design your Arduino(s) to be standalone, you design it to make status information available at a PC which can act as a central controlling and monitoring station. This could be connected using a simple USB cable, or any of a variety of serial or wireless solutions. From the PC you can do long-term collection of measurements and status information (want to provide reports on water consumption through the year?), publish anything that looks interesting on a local web site, and even enable configuration and control via the web site of you like. It also makes alarming via email, SMS and so on much easier if you want that sort of thing. You can do a lot of this locally on an Arduino if you really want, but using a PC makes it much easier, more flexible, more powerful.