So I want to use AceComm, and its "RegisterComm" function but I have a few questions.
JoinChannelByName allows you to pass a password so your channel has some amount of security. Does RegisterComm have any similar functionality? Do I lose any functionality by using JoinChannelByName instead of RegisterComm?
AceComm uses addon channels (i.e.SendAddonMessage). You can only send messages to one of these channels : "PARTY", "RAID", "BATTLEGROUND", "GUILD", and "WHISPER" (+target name). There is no such thing as custom channels for AceComm. You do not need to register. AceComm automatically escapes messages, splits them and throttles the output rate if necessary. On the receiving side, it automatically reassembles split messages and unescapes them.
JoinChannelByName is intended for humans, not addons. Addons used to use them before addon channels were added. There is some drawbacks to using them for addons channels. Firstly, you have to hide the messages by hooking the chat functions. People without the addon will see these messages anyway (e.g. the addon registered the channel and the user uninstalls/disables it at next login). Considering the messages themselves, some special characters must be escaped. Moreover, some garbage is added to the messages whenever the character is drunk, you will have to escape more characters and removes some potential garbage. If you decided to go this way, I strongly advise you to use at least ChatThrottleLib so not to exceed the global output rate limit.
There are both :UnregisterComm("prefix") and :UnregisterAllComm() methods, though they are not documented on the AceComm-3.0 API page. Note that :UnregisterAllComm() is also automatically called on disable if you embed AceComm-3.0 as a library using AceAddon-3.0.