First off I have to say PFsense is awesome. Ok I figured out a bunch of things. I hope this helps people with the same problem.
1. you must create an IP alias for every virtual server.
2. make sure the subnet mask is properly set on the ip alias since it defaults to 32 which won't work.
3. Hyper-v isn't a good BSD host and you will need to create a shell script in /usr/local/etc/rd.c I like to call it something early in the alphabet like 1st.sh since I want to it execute before other shell scripts like haproxy.sh. put this in you script:
ifconfig de0 down
ifconfig de1 down
ifconfig de2 down
ifconfig de3 down
ifconfig de0 up
ifconfig de1 up
ifconfig de2 up
ifconfig de3 up
4. Use HAproxy-full instead of the standard load balancer. Just install it from the packages, it's far more full featured, than the built in one.
5. HAproxy will crash if you try to pass persistence cookies over ssl, if you see the service stopped, that's probably what you are doing. You must use source balancing for encrypted packets, and make sure the cookie fields are blank.
6. Stunnel will allow you to use persistence cookies with SSL. Install it from the packages, put it in front of HAproxy so it will decrypt the packet and send the decrypted packet to haproxy, now you can use full cookie persistence with SSL.
7. Here's a good quick and dirty tutorial for setting up HAproxy http://conheotiensinh.blogspot.com/2011/12/config-haproxy-with-pfsense-version-201.html