Q1: It depends on how you subscribe to messages. NServiceBus was created so that there are business services (limited contexts) that cannot exchange data. However, in CQRS, you have bold events that contain a lot of data that is published so that subscribers can store information in their reading model. This reading model is used, for example, in the user interface. Either through a regular user interface, or through a composite interface (which collects information from several business services). So it depends on what you are looking for.
Q2: You can subscribe to several events. However, there is only one logical event publisher. Therefore, the "CustomerWasBilled" event cannot be obtained from ComponentA and ComponentB. However, you can subscribe to many different events, and each publisher can, of course, have many different subscribers.
[Udi] This publisher can be scaled on several servers, and NServiceBus will handle this for you - no need to subscribe to each machine.
Q3: I would think that this is pure administration. If he must remain online and receive messages, the queues will be filled. If it must be permanently disabled / disabled, and messages are not processed, then you will find out pretty quickly after the component is removed. But I highly recommend documenting which subscribers and publishers are related to each other, and what happens if you change the message or component.
[Udi] If this is an orderly shutdown, then it should include unsubscribing. If this is a crash ergo temporary, then you discover it with standard monitoring (WMI). To protect the queue from being filled, you can determine when the message should be discarded using the TimeToBeReceived attribute.
Q4: This is handled in NServiceBus. It stores subscriptions in a data warehouse, which can be SQL Server, RavenDB, and InMemory. But it also stores the subscriptions in memory and regularly checks to see if new subscriptions have been added. There should be no problem with NServiceBus.
Q5: MSMQ itself is reliable in nature. Of course, if your entire server crashes and all the messages were on the HD that were fried, this is the problem. If a component is unavailable for a longer time, it depends on the SLA if this can happen. You can track the number of messages in the queue or error queue. Remember also DeadLetterQueue. But NServiceBus also lets you track how long it takes to process messages.
When a component is unavailable for a long time (for example, days) than the business must decide what to do. If it processes important messages, introduces clustering, etc.
Hope this helps