They're both containers, but cm:folder is used to represent your typical folder hierarchy in a document / file system. The Alfresco web client and file protocols all query against this type. So, if you create instances of cm:folder, they can be viewed and managed easily via any of Alfresco clients. You may also notice a sub-type of cm:folder called cm:systemfolder - these are hidden by Alfresco clients.
The low-level sys:container is a general purpose container and is used by Alfresco internally, hence the sys namespace.