What is the difference between a list that is on HOLD and a list that is LOCKED?

It is a common error to confuse the HOLD and LOCKED states. They are completely different and it is important to make the distinction when asking for help.

HOLD means only that mail posted to the list will be held until the list is freed. All other operations can be performed on the list, for instance, users can still subscribe and unsubscribe and set personal options freely, the list archives can be searched, and so forth. You free a list that is in HOLD state with the FREE listname command. (Note carefully that if an error condition forced the list into HOLD state, and if the error hasn't been fixed when you issue the FREE command, the list will promptly go back on HOLD and you will be notified.)

A list becomes LOCKED only when you use the GET listname command without the (NOLOCK option and can be unlocked with the UNLOCK listname command or by a list header PUT operation. When a list is LOCKED, users cannot subscribe or unsubscribe or set personal options. However a LOCKED list will still process mail and allow archive searches and so forth.

Please note carefully that it is impossible for a list to become LOCKED as a result of an error condition; a list can become locked ONLY due to a GET without (NOLOCK.