You can override it by the property cq:allowedTemplates in /content/project/en/xyz/abc/So, it first checks for cq:allowedTemplates and if it doesnt have that, then it looks out for cq:allowedPaths.
OOB css comes from here /etc/clientlibs/granite/coralui2/optional/rte/css/cui-rte.cssand as you mentioned, some of them may get override for other css added. and in such cases, we may have to add extra css like what you have done to handle the same.
Apart from including the simulator.jsp, you need to add the device groups that needs to be displayed for the simulator. Have you added cq:deviceGroups property to the root node of your site ??Refer the section 'Specifying the Device Groups' in the article you have mentioned to know more about it.
There might not be an issue in storing but you may face some issues while retrieving programmatically which space and %20 etc. Its always a best practice to use '-' between the words if needed.
create a clientlibs folder within the component folder and add the js, css required for that component. and then include this clientlib in your component.
Thats not possible as the user will not have access to the root node, it will not be able to show the child nodes. One option would be to give only the 'read' access to the parent node and all the other relevant access to the child nodes.