How to search through database of businesses/how to build the content template?
The two major approaches to adding locations in Drupal 7 are location/gmap and addressfield/geocoder.  Comparing these two sets of modules in detail is the subject of a book, Mapping with Drupal, and is outside the scope of this post.  Unfortunately, both approaches are still under heavy development and in all honesty you will likely encounter a fair number of bugs either way.  At the moment, I would choose the Location approach because it has working proximity search (show me all businesses within 100 km of me).

If I were approaching this project, rather than using the built-in Drupal search, I would use the Views modules and filters (exposed filters) to allow users to search.  Once you are proficient with the Views module (Node One has an excellent series of screencasts on learning Views), you will probably find it easier to work with and customize than the basic Drupal search.

A few tips on location- 
If you do install the location module it provides a "location directory" view by default, though it is disabled.  You can enable this view and play with it; it creates an index of all your nodes that have locations attached to them.  This should give you some idea about how to build location-based search in Views.

If you do use location, choose Location CCK (which will eventually be named to fields for D7), not the Node Location submodule.  They are mutually exclusive and Location CCK is the direction that the next major release of the Location module will take.