What does launchctl unload actually do?
SIGTERM

launchd's unload command sends a SIGTERM signal to the associated job's child processes.

Detached Processes

If a process launched by a launchd job has detached from it's parent process, then unload will not affect that process. This is often the case for daemonised processes.

Original Source Code

You can download and inspect the original launchd source code. launchd has since been rewritten and is proprietary to Apple but the original documents the intended behaviour on unload.