hi, this is my first time posting here even though i've been using arduino for quite some time in the past.
also i've been using the arduino ethernet shield for home automation, anyway, answering your questions..
1) yes, if you want to control something in your house over the internet, or locally you need the ethernet shield, it's quite simply to use, you just have to set up a configuration (ip address, mac address) then connect it to your router and you can access it by all the computers in your house, and with some port forwarding even the internet. I really recommend this shield before others, because of its simplicity.
2) No, the arduino ethernet shield will act as a server, for example, if you set up the ethernet shield by the ip address of
http://192.168.1.100/, then you can access it by your computer typing the address in the browser bar. The shield will display a page with some data, as it is acting like a server.
3) Not quite, as i said before the shield will act as a server, the purpose of home webservers are generally for more complex tasks.
4) If you want to control the arduino over the internet, you should just check if your router has port forwarding.
About your application, yes you can do it with the ethernet shield, the one that you posted before it's fine, you just have to figure out how to detect if your dog lays on the couch, there are several ways to do this i can think of laser detection or
pir, the output of that sensor should go to one of the arduino's input and it can be read as simple as:
client.print(analogRead(analogChannel));
with that data you can send a
mail or something, ah, and it should be the same thing with the water gun lol, just setting it as an output