Hi Tim,
Regarding the items above:
1) Topics and Subscriptions provide the ability to distribute messages between different clients. See
http://abhishekrlal.wordpress.com/2012/02/07/enterprise-integration-patterns-with-service-bus-part-1/
2) Service Bus does support high availability and scale on multiple machines, see
http://msdn.microsoft.com/en-US/library/jj193012(v=azure.10).aspx
3) There are several ways of correlating messages, for long running workflows etc. Sessions are your best bet. You can lock a session and then process all messages associated with it. Session state can be used (with transactions if needed) to store
progress of processing that session. See
http://code.msdn.microsoft.com/windowsazure/Brokered-Messaging-Session-41c43fb4
4) Yes, you can schedule a message for a later time and then have a pending receive and the message will be delivered at the desired time to wake up the client. see
http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.brokeredmessageproperty.scheduledenqueuetimeutc.aspx
5) In case of errors you can check the IsTransient property on the exception and that will tell you if it is ok to retry. See
http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.messagingexception.istransient
On key advantage of Service Bus is the symmetric choice it offers in both a cloud hosted PAAS and local server environments. More details at:
http://abhishekrlal.wordpress.com/2012/07/16/service-bus-symmetry/
Regards, -Abhishek Lal
Senior Program Manager
Windows Azure AppFabric Team