First of all, sending the intermediate chain towards the root certificate with your server response is not always exactly NEEDED, but it is recommended practice.
Many clients nowadays have all kinds of intermediate certificates stored in their certificate trust stores or get them from the OS trust store. However if you intend to serve the GENERAL public, you cannot make any assumptions on this, and you SHOULD send the intermediate chain with your response.
If you don't send the intermediate chain you will be left with sporadic reports of people being unable to connect to your service. And that may depend on their browser, the version of the browser and the underlying OS.
Ironically, choosing a specific intermediate chain and sending it with the response may sometimes abort the SSL validation for some clients that would have validated it from some stored chain themselves. As was the case with some older openssl clients on servers and letsencrypt issued certificates, but you can assume that in that case the support of those servers will eventually figure it out.
You don't actually need the ChainFile directive in Apache for that per se, because you can also concatenate pem certificate files from end certificate towards the root and use them with just the SSLCertificateFile directive.
What you don't need to do, is send the root certificate. Because if a client would actually use that, it would defeat the practical use of SSL validation.
SSLCACertificateFile
is needed if and only if, you need to validate certificates from clients that connect towards you AND you don't wan't to use the systems underlying trust store for that. So, this is actually a totally different use then the SSLCertificateChainfile
Furthermore, if in doubt use the excellent validation tools of Qualys SSL Labs: https://www.ssllabs.com/ssltest/