To use carp you will need one real ip for each pfsense plus all others using carp.
I suggest you to use one of your 4 ethernet ports to sync between boxes.
A new feature on 2.x that will help on vip assigns is in this post from jimp
http://forum.pfsense.org/index.php/topic,45209.msg240909.html#msg240909
After sync and carp, just create your 1:1 nat on firewall -> nat and then change your outbound nat to manual to create your specific outgouing nat translation rules.
By default, all interfaces but lan has no access to anywhere. You will need to change this default rule to deny access from lan to dmz.
All other rules you can create on interface that traffic starts. If you want to allow internet access from a host on dmz, the rule will be on dmz. If you want to allow that everyone can reach your web server, then rule will be assigned on wan.