I don't know about CMIS, but I can tell you about extension folders:
classes/alfresco/extension is extending repository (localhost/alfresco context) and
classes/alfresco/web-extension is extending share (localhost/share context).
So if you put a component in web-extension, somewhere in site-webscripts subdirectory, you will have a new Share webscript, perhaps a dashlet. If you put it instead in extension directory, under templates/webscripts directory, you have a backend webscript.
The webscripts you see in services index is from those (respective) subdirectories when you unpack alfresco.war and share.war.
Ie. unpack share.war and you will see WEB-INF/classes/alfresco/site-webscripts. There are all the share webscripts. Anything in the shared classloader path (TOMCAT/shared/classses/alfresco/web-extension) is overriding the defaults. Similar goes for Alfresco.war.
Additionally, you mention root-scoped objects. Those are defined in spring XML config files, in various components and beans, you could create your own Java bean and through spring bean configuration expose it to your webscripts.
Are you asking about anything particular there?