MSBuild has a number of targets that have been specifically created to be ‘overwritten’ or customized.
I have never seen a compiled list of these targets so here is a list of all the ones that I am aware of….
These targets are all safe to customize because in Microsoft.Common.targets they do not have any ‘implementation’, i.e. they get run but do absolutely nothing. You could (I believe) override any target you want to but if you do be aware that your ‘override’ entirely replaces what is in MSBuild. So if you absolutely must override a target that has an implementation, unless you completely understand 100% what you are doing, I recommend copying the full implementation and working your customization into the existing logic.
I would also strongly suggest that you NEVER modify Microsoft.Common.targets directly, that is just asking for pain.