The Synonyms module provides various functionality targeted at handling synonymous (similar) spelling of the same name. Currently the module only provides synonyms for Taxonomy Terms, though there are plans to extend it and to support synonyms for all entity types. There are few key concepts tightly integrated into Synonyms module that are worth knowing for the end user. They are:
Field independency
Synonyms can be stored in various manners in your database within fields attached to your entities. Since the fields are different (entity reference, text, etc) you can keep your synonyms in the most convenient way for you.
Synonyms behaviors
Having a list of synonyms doesn't really help much; what you want to do is something productive with them. That's where synonyms behaviors whatsoever come on stage. They are abstract self sufficient units of behavior that do something productive with synonyms. For example, here we have the autocomplete behavior, which introduces autocomplete text fields that do look up not only by term name but by its synonyms too. Synonyms behaviors can be added through other contributed modules, you're not locked down to what Synonyms module has to offer you.
Synonyms behavior implementations
Lastly, here is yet more abstract unit. Behavior implementations bridge between existing synonyms behaviors and existing fields that may contain synonyms. Imagine as if you had a table, where rows are fields attached to your entities and the columns are the existing synonyms behaviors. Behavior implementations fill in the cells of this table. So, for example, you could have behavior implementation for autocomplete feature for the entity reference field. It means that synonyms stored in entity reference fields can participate in the autocomplete functionality.
Let's cover each of these important concepts in details.

Field Independency

As stated above, your synonyms can be saved in many different field types. Synonyms module ships support for storing synonyms in the following field types: Other modules may extend this list by implementing "synonyms" behavior for other field types. The "synonyms" behavior is the most basic and general behavior that exists for synonyms. Basically, it's precisely the ability to extract synonyms from fields and to search for existence of a synonym within a field.

Synonyms behaviors

Synonyms behaviors are some useful for the end user features that leverage the synonyms data. Synonyms module ships with the following behaviors: Similarly, as with field independency, other modules can introduce their own behaviors. If you are interested in introducing your own behavior, refer to synonyms behaviors page.

Behavior Implementations

Behavior implementations connect behaviors to field types. Synonyms module ships the following set of behavior implementations:
Field type \ Behavior General synonyms Autocomplete Select Search
Text implemented implemented implemented implemented
Term reference implemented implemented implemented implemented
Entity reference implemented implemented implemented implemented
Lastly, you as a website admin can enable or disable certain fields to participate in certain behaviors. So you have full control over how things get set up in your website. Additionally, some behaviors may provide additional configs, for example, the autocomplete behavior will ask you with what wording to suggest a term if it was matched by one of its synonyms. The referenced above table may be extended through hooks that Synonyms module provides. Feel free to study the hooks at synonyms.api.php file. Also, you may find it useful to read about writing custom behavior implementation.