That's more of an automatic restart (kill and start the process again) than an automatic reload (update code within the running system). And surely there are non-go-specific tools which can already do that, aren't there?
The kill of go-reload was to make sure background processes get cleaned up, but I suspect one of the kill or exit in the close function is superfluous.
Sure. Send the signal, the signal handler - custom or default - handles it. This works whether the signal comes from another process or its own process.
Go also provides a syscall for ReadDirectoryChanges, and one really nice Go library that uses inotify/ReadDirectoryChanges is https://github.com/howeyc/fsnotify