1 - If the UObject and the property are replicated, there is no need to call a multicast as the property will get replicated by itself.
2 - All replicated property (REPLIFETIME) will be send to the client with their actual values and updated when changed. There’s no need for multicast. You don’t need to bother about replicated properties replication. They will be synced with the server.
3 - This is a bad idea. Only replicate what is needed. Replicated properties use server’s CPU to check if it has to be sent to clients.
4 - As stated above, if the object and its property are replicated, it will be done automatically and all properties will be up to date. You can still add repnotify to call custom code on client once the property has been replicated.
5 - Almost all multicasts can be replaced by replicated properties. For example, you can call a multicast function when game start or use a replicated boolean with a repnotify. The repnotify and the multicast will both run on the clients to handle game change status. Most of the time, repnotify is easier to use and work out of the box, but it’s not always the cleanest way.