I've done something similar, but with more sensors and fewer relays. I wrote most of my own code, which it doesn't sound like you're looking to do, but I have some suggestions for your setup...
Take a look at webiopi. It might not be quite what you're looking for, but it should give you some ideas.
Since you want everything controllable from one web page, I would organize this as one master with multiple "slaves" that that single master controls. The master will run the web server, store any state that's needed, and so on. To make a change on a device that's connected to a slave, or to read a sensor connected to a slave, it will SSH into that slave and run the gpio command to read or write the GPIO pin, or execute a script there. SSH is great for remotely controlling other devices, since you can run a command on a remote system from your own command line (or from within a shell script.)
As far as your question about OS, it really doesn't make much difference. I picked Raspbian for two major reasons: 1) I am familiar with Debian, and Raspbian is just like that so I can work with it easily and 2) it is the recommended OS on the Pi, and therefore has great support. While #2 is a good reason, if you have a different Linux distro that you are familiar with (Fedora, for example) then you should probably pick whatever is closest to that. If not, Raspbian is a great choice.
Regarding software, that very much depends. As I said, I wrote a lot of my own. My use is fairly simple, mostly reading sensors and taking actions based on state changes for now. You can always do that too, or you can find pre-written software and customize it. Take a look at what's out there and see what you like and don't like.