This signal is generated by the Kernel when your controlling terminal goes away to the terminals ProcessGroup. Or, in simplier terms, when you close the Xterm, or hang up a modem. Since daemons run in the background and don't have a controlling terminal, they often use SIGHUP to signal that they should reread their configuration files. This can cause issues with some programs that work as both a daemon and an interactive program, such as fetchmail(1).
An example of a daemon that rereads its configuration file on SIGHUP is init(8), the first process created (which is responsible for creating all other processes, like getty for logging in). If you edit inittab(5), its configuration file, you can do
kill -HUP 1
and it will re-read the config file (note that the correct way to do this is to use telinit(8)).