How do I know if systemctl daemon-reload needs to be run

You can check loaded unit by command systemctl show <unit>.service. As far I know there is no tool to check changes in unit files.

As well you could run this bash command for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done it would show what files has been changed.

Example:

[root@centos-linux atolkachev]# for var in $(systemctl | grep running | awk '{print $1}'); do systemctl status $var | grep "changed on disk" | grep ".service"; done
Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.