I'm not sure exactly what you are looking for. All of this except for (not playable) can be done via HyperList, just log in and click on "Create ROM List". Then select "List generated from our custom filters (Clones, Genre's, etc)". Enter a name for your rom list and select MAME for system. Step 3 will allow you to use filters to create your rom list.
If you want a list with only Basketball games, select ONLY Basketball, and generate the list and save. If you want a complete list then select everything, if you don't want Mahjong then don't select Mahjong.
All games that are:
1) Not adult - HyperList - "Include Mature Games?" select no and no adult/mature games will be included on the list output.
2) Not clones - HyperList - "Include Clones?" Change this to NO if you don't want clones on your list. Keep in mind, not including close will remove games such as Pac-Man since it is a clone of Puck-Man.
3) Playable (HyperList won't do this one) - This isn't a filter in the current version of HyperList.
4) Not gambling - HyperList - don't select casino, horse racing, etc.
5) Not Mahjong - HyperList - again, just don't select Mahjong when creating your list.
6) Separate lists for each "Genre" (ROMLister won't do this one) - HyperList - Select only the Genre you want a list of and generate the list.
I personally use a list with clones, no mature (adult), no casino, no mahjong, no quiz, no bios, no Horse Racing. I then create separate lists for each individual Genre.
As far as eliminating games that require a chd, you'll probably have to do that manually as there is not a flag in the database for this.