Use Drupal views to generate contact Reports in Civicrm
If you prefer a solution which is editable via a web GUI, then Drupal Views are a great flexible approach. We use them extensively. You may hit the occasional limitation (either a "Views-ism" or a lack of support for some minor feature) but that's rare. If you are comfortable with Views, you'll be right at home :)

If you prefer writing SQL and are comfortable with PHP, a CiviCRM Report is a solution which offers you a lot of customisation, and building extensions is much easier now with civix.