What is the 'civi' approach to customising templates and php files? (if this question is a duplicate very happy to remove. I just searched for one after reading Error Message Customization
Am sure others will provide a more substantive answer but going to start just with a link to this wiki page since I had it handy
The 'Civi approach' towards customising templates and php files would be to create an extension with your customizations. How to do that can be read on this wiki page
An extension is basically an additional bit of software that you switch on in CiviCRM and adds stuff to CiviCRM or customizes parts.
That is the recommended approach. You can also customize core templates and put them in your customized directory as the link from petednz explained (and the same for php files). This is however an approach that can throw up problems when upgrading. Extensions might not be compatible with upgraded versions either, but can simply be switched on and off.