Basically this protocol is used for communication between Apache and Application server.

There's some non-trivial overhead to parsing http headers on requests and creating them on responses.

If you are fronting your app server with a web proxy server, AJP allows you to skip that extra parsing and just pass efficient binary
representations of the headers between the proxy server and the app server.

There are other benefits with things like simple connection pools and tight integration if you use apache/mod_jk.

Client (using HTTP/S) ----> Proxy server (using HTTP/S) ---> Application Server
Client (using HTTP/S) ----> Proxy server (using AJP) ---> Application Server