Adding content of products based on subtype
Lets start by saying that content types are not meant to be used for grouping. Drupal content (nodes) come with permission checking and invoke a lot of hooks upon loading. That is not bad per sé (and in fact required for most content), but is overkill for grouping. Your parent child structure would involve 3 node loads where you want to display one.

If you need grouping, you need taxonomy. This offers almost the same functionality as content types with regards to fields and url aliases, but is much lighter in use. To start you could recreate your reference structure using taxonomy terms. 

However, as I already explained in the comments, why not use nested taxonomy? You could place all your categories in one taxonomy vocabulary, allowing you to see, edit and rearrange all terms from one page. It would make your system much more maintainable. Also the fact that you state that you need second level terms to show up after selecting the first is possible. Have a look at Hierarchical Select, Simple hierarchical select and Client-side hierarchical select. These offer exact that functionality. 

Your last requirement (if there is more please edit them into the question):


  I need to list category and sub category separately


Depending on how you want to achieve this, is can be done. With views it is very easy. Add a filter to the view, select the parent term, then select that it should be empty. It should give you a list of top level taxonomy terms.