Azure Application Gateways use Health Probes to check on the status of the backend pools. Unfortunately this does not monitor the CPU usage of the VMs, but only the TCP or HTTP connectivity. This is difficult for a high CPU situation, as the TCP / HTTP connectivity will be delayed, but often still responsive in the given timeout.
Requests are distributed in a Round Robin algorithm, so if all of your backends are healthy, they should all have been receiving equal requests. If this was not the case, then there is an issue with your backend pool.
You can also look into Monitoring your backend health & diagnostics for Application Gateways to help look into what happened / is happening.