A p99 in milliseconds means nothing to somebody who does not think in latency distributions, and Apdex compresses the same data into a number between zero and one.
T = 500ms (the target)
satisfied ≤ T count fully
tolerating ≤ 4T count half
frustrated > 4T count zero
Apdex = (satisfied + tolerating/2) / total
0.94 = "most people are fine, some are not"
0.71 = "a lot of people are having a bad time"
The value is entirely in communication: a single number that moves in the right direction is something a non-engineer can hold, where a percentile distribution is not. The threshold is a choice and choosing it badly makes the number meaningless — T should be the point at which a user notices, which is a product question. It hides the tail deliberately, so it complements a p99 rather than replacing it.