Signals provide an asynchronous communication mechanism between processes in Linux. They are specified by numbers and can be sent and handled via functions like kill, signal, and sigaction. Common signals originate from the kernel on illegal operations or from other processes. Signal handlers are registered to handle signals and should perform minimal work. Upon exit, processes return an exit code indicating normal or abnormal termination.