Custom fields and categories can both be used to create search filters, they can both be used to create drill-down searches, they can both be used to label results and more. Understanding which one to use is a fairly common question we receive.
Sometimes a given problem could be solved equally well with categories v.s. custom fields. In those cases, a good question to ask is "Can a record have multiple values for this attribute or just one?" If your answer is multiple, then categories is best. For example, locations can be placed in zero or more categories, so they are great for storing attributes like "Services" or "Brands", where the result might include zero or more options. The categories in the "Services" example could be things like "Plumbing", "Construction", "Electrical". The Category Group Name would be "Services".
In those cases, the association of the category to the record is sufficient for display and search. E.g. if a location is in the Construction category, we can search for it and display in the results that it is in the Construction category.
If the answer is "just one", then you might use a custom field. For example, "annual revenue" is only going to ever hold a single value. Similarly, "phone number" will only ever have a single value. In those cases, it is clear to use a custom field.
In those cases, we need to display the actual value of the record for display and search. E.g. if the annual revenue is $123,456, we can search for it and display in the results as the custom field.