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.
Its not really clear what component you are referring to so its better to provide a specific use case so we understand the requirements. Meanwhile you can check the following document to get some idea on how to create/extend AEM components: