1) If you're using MSMQ 3.0 or later then HTTPS messaging is available
2) There are different approaches/limitations when it comes to authentication, I'd recommend you explore the documentation in-depth to make sure MSMQ can satisfy your needs, you can start here
3) My personal preference has always been to send to a remote queue and read locally but I think the 'best' approach would depend heavily on you solution architecture
4) Yes
5) Setting the Recoverable property on messages takes care of this, it impacts performance though