Well, I've come to the conclusion that the Queueable trait IS required to queue Jobs, Notifications and Mail. I wasn't sure of this from the Laravel documentation.
I'm still confused why Listeners don't include the Queueable trait by default but do include use Illuminate\Contracts\Queue\ShouldQueue; and use Illuminate\Queue\InteractsWithQueue; at the top unimplemented. Seems inconsistent.
So I'm calling Question #1 and Question #2 answered. Queueable needs to be used if you want to queue the class.
InteractsWithQueue seems like it just gives access to a few helpers to see how many attempts have been made to run the job, you can delete and fail the job, etc. I'm thinking I won't need that much right now.
Mail vs. Notifications:
Seems like Notifications are probably better most of the time for short messages coming from direct actions that can be sent to multiple channels...
BUT, notifications can be sent to the database... which could actually act as a communication history log... which is nice and actually a business requirement I have.
Would be nice if mail could be sent to the database for this reason. It would also nice to be able to send both to a Log channel.
I also think it would be cool if when you generate a Mail if the system created a blade view for that based on the name you provided as well. Currently it just spits out return $this->view('view.name'); and leaves the view file creation up to you. Which is fine, just seems like something that could also be automated with the command.