I'm afraid I can only answer your first question, not being very familiar with Celery, perhaps you can find the answer in the docs.
Your question highlights the distinction between daemon and non-daemon threads.
Daemon threads are those which will not hang up the main program. They will keep working until they finish, regardless of what the main program is doing.
Non-Daemon threads are just the opposite. They must be killed before the main program ends.
This question/answer does a good job of explaining the difference and implications.
In the scope of your question, if your processes are daemon threads, they should be fine if you restart/stop your server. However, if they aren't daemon threads, you shouldn't be able to stop the celery server (assuming my understanding of daemon threads is correct)
Hopefully this helps