It seems that all you need is a taxonomy instead of a custom post type or a combination of both.
If you register a taxonomy called faq and create a template taxonomy-faq.php, the query on that template would loop through all the posts from current taxonomy term. In other words, under the url site.com/faq/common-questions you would get all the posts with a term ‘common-questions’ from taxonomy ‘faq’ attached.
To show a list of faq categories with that approach you would have to use get_terms()
function.