Should I allow communication on public networks?

This is old, but you are right. The default is idiotic. Point one is that allowing any Inbound-initiated traffic is a risk. Point two is that you might enable it on a Private or Domain network where you have a reasonable trust of other devices. Point three is that you would almost never trust it on a Public network. There are quite a few apps that request Inbound inbound exceptions when they don't need it. I can only conclude that the developers or packagers of the app did not really know what they were doing. They must think that, if they can bring up the prompt, you can decide what to allow.