Whether you use private or public messaging will depend on your use case. However logic around channels might provide some guidance. A private channel can not be seen or joined by non-members, only via REST. Members of private channel can add non-members.
A public channel is seen and can be joined by non-members. Also public channel, its members and messages are visible to every client endpoint in given service SID. This means that synchronizing channels list on client start can take more time with large amount of public channels. Therefore, we recommend creating private channels as they are visible to only participants and will decrease channel synchronization time on client start.