Relations can be identified as Dependency, Relation, Link, Duplicate or Blocker at your discretion.
Generally, all the Relations have similar behavior. However, Blockers and Duplicates support some additional functionality specific to these particular types only.
Dependency means that a user story, task, etc. depends on another user story, task, or any other entity. For example, the core team is working on an API, and the other teams are dependent on the core team's progress. Feature A should be completed before Features B, C are started.
Relations are Outbound for the Feature A. Features B and C are outbound items for it.
Relations are Inbound for the Features B, C. Feature A is an inbound item for them.
A Blocker does not literally block the flow of entities in a portfolio (project). That is, you can still change states for an entity with a Blocker. A Blocker could be an issue that has to be resolved before the entity for which you are adding the Blocker relation can be completed.
Example: Blocker relation is outbound for open Impediments and Bugs and inbound for work items that are temporary blocked by them.
Find more about Blockers and Impediments.
Duplicate relations are especially useful when you work with bugs and requests. There is a special Duplicates box in the right panel of the detailed view for every bug and request. It allows you to mark a bug or a request as a duplicate of another one. Once you mark an entity as a duplicate, a relation of the Duplicate type appears, connecting the two entities.
Example: The Duplicate relation is outbound for origin bug / request and inbound for duplicate items that are discovered later.
The Relation and Link types are any other ad hoc relations.
Relations of type Relation are automatically created when you create a work item from a Request entity.
Example: Relations are outbound for requests representing product requirements and inbound for backlog work items that can be implemented to satisfy the gathered requirements.
More information: Requests related to backlog items.
In basic setups, Relation and Link behave the same way. They are aliases and the only difference between them is the icon and label. Which you choose to use for your particular use case is based on your personal preference.