The classical hidden terminal problem, where two clients of the same AP can't receive each other and so collide when they transmit, isn't such a big deal with WiFi. First, there are, by definition, no hidden terminals for the downlink (and most traffic is downstream), or the clients couldn't associate with the AP. Second, although two clients can't receive each other's transmissions, if they're associated with the same AP they can usually hear each other well enough for carrier sense to work.
The usual problem these days is too many overlapping networks. Different APs on the same channel will not only defer to each other when they can hear each other, but also because the AP tends to use a shorter contention window than clients, when they do transmit, they still collide with each other with moderately high probability. Worse, modern 802.11n and 802.11ac only get good performance by forming aggregates of many packets (up to 64KB in 802.11n, more in ac) to reduce the overhead of medium acquisition. Often they don't use RTS/CTS because this reduces performance in benchmarks. When such aggregates collide you lose the whole aggregate, not just one packet.
The usual problem these days is too many overlapping networks. Different APs on the same channel will not only defer to each other when they can hear each other, but also because the AP tends to use a shorter contention window than clients, when they do transmit, they still collide with each other with moderately high probability. Worse, modern 802.11n and 802.11ac only get good performance by forming aggregates of many packets (up to 64KB in 802.11n, more in ac) to reduce the overhead of medium acquisition. Often they don't use RTS/CTS because this reduces performance in benchmarks. When such aggregates collide you lose the whole aggregate, not just one packet.