So you're trying to create an enterprise-class roaming Wi-Fi network with consumer-class gear, is that it?
To create a roaming network, make sure all the APs are publishing the exact same SSID, with the exact same security mode (ex: WPA2 Personal, AES-CCMP only), and the same if you're using PSK/Personal, the exact same key. Make sure adjacent APs are on non-overlapping channels (in 2.4GHz, channels 1, 6, and 11 don't overlap).
Make sure they are all in bridge mode, all connected to the same Ethernet LAN. Make sure you have a single DHCP server on that Ethernet LAN. If your LAN needs NAT, make sure you have a single NAT gateway for the whole Ethernet LAN. I'm basically saying don't have each AP do NAT and DHCP service; have one box do it once for the whole LAN.
Clients should automatically roam when the signal strength on the current AP gets weak, and there's another AP publishing the same SSID and same security mode whose signal strength is significantly better. The 802.11 spec leaves roaming decisions up to the clients, and doesn't specify an algorithm for determining when to roam; that's left as an implementation detail, so every client vendor does it differently. Some clients do a good job of smoothly roaming from one AP to another to keep the best data rates. Other clients are terrible at roaming and never really roam until they are so far from the original AP that they completely fall off of it.
Load balancing is hard to achieve with consumer-class gear, because the 802.11 spec doesn't really address load balancing (some more recent addenda to the standard help address this, but those technologies are not widely deployed). It's up to each client implementation to pick which AP to join, and it's hard for a client to know how loaded a given AP is, so most client implementations just join the AP with the strongest signal that's publishing the SSID the client wants to join.
Enterprise-class APs provide proprietary load-balancing methodologies based on doing tricky things behind the scenes, like kicking off clients or not letting them join APs that are too loaded, even going as far as making the most-loaded APs not respond to Probe Requests, so the least-loaded APs are the only ones that show up in scans.
By the way, you're not using web portal-based authentication, are you?