Is there a way to join an interactive session of a process that was ran on boot with /etc/rc.local, or send it "stop" over STDIN on reboot/shutdown and wait for it to end before shutting down?
As has been explained in comments, you need to “save” the process's stdin somehow. By default, depending on the init system, this may be the console, or
/dev/null. To be able to attach to the process, use a screen multiplexer such as Screen or tmux. See also How can I disown a running process and associate it to a new screen shell?
/etc/rc.local, run something like
screen -S mydaemon -md /usr/local/bin/mydaemon --some-option
To attach to the program interactively, you would then run
screen -S mydaemon -rd
To automatically send keystrokes to the program (see sending text input to a detached screen):
screen -S mydaemon -p 0 -X stuff 'bye^M'