Assuming you do require a router/firewall (let's say the cable modem doesn't provide one), you have two ways of doing this:
Obvious method: Turn the 1st access point into a router.
└─[Wireless Access Point #1 & Router & Firewall]
├── Wireless Access Point #2 - 192.168.1.2/24
└── Wireless Access Point #3 - 192.168.1.3/24
The access points #2 and #3 would remain in bridge mode.
Advantage: This lets you have a single subnet across all access points (allowing automatic device discovery, such as for Chromecasts &c.)
The other method: Have separate subnets.
I assume I would set up unique 192.168.1.X address ranges in the DHCP servers of each of the 3 routers.
No – you would set up unique 192.168.X.0 address ranges in each router.
├── WAN 192.168.0.2 - Wireless Router #1 - LAN 192.168.2.1/24
├── WAN 192.168.0.3 - Wireless Router #2 - LAN 192.168.3.1/24
└── WAN 192.168.0.4 - Wireless Router #3 - LAN 192.168.4.1/24
Every router should, generally, have its own subnet. This allows each router to have routes towards the remaining subnets. For example, router #1 could have a route table:
DESTINATION GATEWAY INTERFACE
192.168.2.0/24 - lan
192.168.3.0/24 192.168.0.3 wan
192.168.4.0/24 192.168.0.4 wan
Disadvantage: This requires each router/AP to have a different SSID (no automatic roaming because subnets are different), and does not allow device discovery across different subnets.
Disadvantage: Requires more complex NAT and firewall configuration. You should make traffic to other LAN subnets "pass through" (be forwarded without any sort of NAT). Similarly, your filter rules in each router must accept incoming packets from other routers' subnets.
Here's a rough iptables example:
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -j ACCEPT
-A FORWARD -s 192.168.3.0/24 -j ACCEPT
-A FORWARD -s 192.168.4.0/24 -j ACCEPT
-A FORWARD -j REJECT
-A PREROUTING -d 192.168.2.0/24 -j ACCEPT
-A PREROUTING -d 192.168.3.0/24 -j ACCEPT
-A PREROUTING -d 192.168.4.0/24 -j ACCEPT
-A PREROUTING -o <wan> -j MASQUERADE (or SNAT or whatever)
Yet another method: Have one subnet and three DHCP servers.
You can probably get away with this:
├── WAN 192.168.0.2 - Wireless Router #1 - LAN 192.168.1.1/24
├── WAN 192.168.0.3 - Wireless Router #2 - LAN 192.168.1.2/24
└── WAN 192.168.0.4 - Wireless Router #3 - LAN 192.168.1.3/24
Yes, this indicates all three routers' LANs connected to form a single ethernet – although importantly not in a loop (unless DDWRT supports RSTP, in which case go wild). The interconnection of all LANs is required if you want a common SSID.
Yes, all three routers can do DHCP. In this situation, each router's DHCP address range should be different although from the same subnet (e.g. 192.168.1.101–192.168.1.125, 192.168.1.126-192.168.1.150, etc.)
Advantage: You have a single subnet – all three APs can share the same SSID, roaming works, device discovery works.
Disadvantage: Troubleshooting this can get annoying. Port-forwarding will be hell.
(That said, it's not a crazy method. It's similar to how large networks implement router failover: they have two routers sharing the same ethernet, the same LAN subnet, and sharing an IP address using a protocol such as VRRP. Only one DHCP server and pool is needed then.)