Is it good practice to search for custom posts based on custom field values?

This sounds like the perfect use case for Custom Taxonomies.

And unless you plan to customize the admin backend, the Codepress Admin Columns plugin could be useful for filtering the posts using those new taxonomies.

Edit (2014.01.23):

Yes, you could build a “search form” where you would list the available taxonomies.

The get_categories() function will be useful to retrieve all the terms of a taxonomy, using the “taxonomy” parameter. Refer to the codex.

With that method, you could produce a dropdown list for each taxonomy.

The selection of that dropdown could generate a URL that includes the necessary parameters for the query: example.com/?roofcolor=green,red&roofcity=chicago+new-york …

This would result in a page that displays the filtered content.

It seems to me that this is a pretty simple method of achieving what you want.

Here are two articles with more information about how to write complex taxonomy queries: