Well, the separation of .conf files alone is not making any difference. It helps only human beings like us to manage this stuff. I suggest this part of Apache docu, especially the section titled How the sections are merged. Saying that, I can only make some well elaborated guesses, since I do not have the whole picture of your setup.
I’m familiar with the concept. I use this type of setup for +17 years 'cos it’s convenient and easy to handle, and once in a while make adaptations to changes, new features or BC breaks in Apache.
Up until now all I had to do is drop in a new .conf file, make adjustments for the folder and host names (and hosts file) and I’m done. Usually.
I don’t know how to debug this fancy JavaScript and it’s interaction with the PHP code.
Ok lovely people… I made an effort.
Installed a new copy of Apache 2.4.41.
Changed its http.conf just slightly to “honor” my well-hung setup and loaded the beispiel.conf for the various Kirby test sites: plain, starterkit, composer.
I changed Kirby’s debug=false just to be save (true in starterkit) but had to modify my PHP dev settings in order to finally get access to the panel:
; error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = 0
; display_errors = On
display_errors = Off
Doing so, the various Exceptions thrown during the install/account creation process by Kirby and their massive backtrace will NO LONGER appear in the Response payload and thus won’t mess up the XHR’s expected JSON data.
Actually display_errors = Off did the trick. Which I can live with as long as I can code with error_reporting = E_ALL & ~E_DEPRECATED enabled.
So there you have it!
“Problem” solved! If PHP errors/exceptions show up in the server Response, XHR requests are doomed to fail.
I should have thought of that, 'cos that’s what I hate about XHR and JS loaded front ends.
However I still have an issue with the “Installer” trying to locate various files that do not exist in any distribution: “admin.yml”, “error.php”, and if the account is created, fails to load the “user.txt”. I guesstimate the latter is simply a timing or ordering problem; i.e. the existence of “user.txt” for this new account is expected before it’s eventually created in the very same process as an empty file.
That I consider a bug 
Cheers.