Arun Patidar has provided the information to get all the properties for the node type cq:Component. I just wanted to expand on your question about creating custom properties. The node type cq:Component is OOTB and you cannot (should not) modify it to add new custom properties to the node type definition. With that said, you can add custom properties to an instance of the node type cq:Component. You will need to manage the name and the data type definition of the custom properties within your code.