kari_kari: its impossible to give a detailled answer without knowing what OS this runs on and what software you are using. But.....
Moving to a clustered solution from a single server setup you are going to find that's there's lots of stuff you need to think about - not least keeping your configs, data and code in sync. But with only 2 machines, its probably not worth the effort of using cluster management software.
I'd strongly recommend that you start by setting up a couple of virtual machines on your local machine so you can try out deploying and managing the 2 systems.
Next thing to think about is what software you run where. splitting the web and DB functionality across 2 machines means that you actually double the probability of a complete outage. OTOH if you set up the 2 machines as both a webserver and database server (with appropriate replication) then the resultant probability of failure is massively reduced - putting some hard numbers on this, if PF=0.001 (or 0.1%) then the architecture you propose has a net PF = 0.001 + 0.001. OTOH if both systems are capable of running in the event of the failure of its counter-part, the net PF =0.001 X 0.001 = 0.000001, or 2000 times more reliable!
But you do need to put some thought into session replication, and mysql replication (master-master is preferable, but master-slave may be more appropriate in some cases).
Regarding mail - I would recommend setting up the second machine as the secondary MX - but only run POP/IMAP services on the primary MX.
Do configure individual ip names for each service/machine combination (this will give you some flexibility later).
For the database failover - until you're very sure that you can automate it fully, do not allow automatic recovery from a failover - however the initial failover should occur quickly and preferably fully automated. Switching ip addresses on a hosted system is not something that most hosting companies will be comfortable with, let alone facilitate - I'd go with implementing the failover (though not necessarily the failover detection) in the application (you don't say what language(s) the site is developed in).
There are lots of guides and discussion of mysql replication elsewhere on the internet. Similar for a secondary MX. As for the webservers - its just a matter of running the same config on both machines and referencing both address in the webservers A DNS records. (Google for Round Robin DNS)