Tags are used to label people and put them into categories. This helps you with sorting, filtering, segmenting, and reporting on the contacts (and groups) in your database. More about tags.
Custom Fields also serve as labels, but they pertain more to describe the contact/group profile rather than to group that profile into a segment.
Tags, however, are better for things like marking people as "Major Donors" or "Board Members" and such. Both tags and custom fields for a Contact can be changed as well.
The major difference is that Custom Fields have a question attached to them, a field title, and the data in the field is in the form of an answer to the question. This means that the data (answer to the question) in the custom fields can also be open-ended, long-format text, which is not true of tags. Tags are just labels - they don't have these other attributes or uses. Custom Fields can be supporter-facing questions, but don't have to be. Tags cannot be supporter-facing and are for your operations team information only.
For example, a Custom Field you might have in your database is a question about dietary restrictions. This can label your constituents as vegetarian, gluten-free, etc. This is a helpful detail to have about that person or group, but it is not something you might typically use to classify segments of people in your database (unless, of course, your organization's work is related to food). There are always unique cases, so sometimes the decision to use custom fields vs. tags to label people will depend on your particular organizational structure and needs.
We work with organizations of various sizes in every industry, so we strive to make our platform as customizable as possible. That means that some of the structure and how you'd like to set up your particular process with Flipcause Contact Database is up to you.