Let's take evince and gedit as examples. Open a terminal and run:
apt-cache show evince | grep Conflicts
apt-cache show evince | grep Breaks
This pair of commands will tell you if evince breaks or conflicts with something else. In my case I get
$ apt-cache show evince | grep Conflicts
Conflicts: evince-gtk
$ apt-cache show evince | grep Breaks
<blank>
so evince conflicts with evince-gtk that means they shouldn't be installed at the same time (APT will complain if this ever happens).
In my case evince doesn't declare to break any package so let's skip to gedit. Now, run
$ apt-cache show gedit | grep Conflicts
<blank>
$ apt-cache show gedit | grep Breaks
Breaks: gedit-plugins (<< 2.91)
As you can see gedit does not conflict with anyone. Nonetheless, it does break the package called gedit-plugins for versions strictly less than 2.91. That means gedit-plugins most be more recent than this version to work correctly with gedit and in particular APT will refuse to install gedit unless you remove gedit-plugins (<< 2.91) first.
Notice that even though the gedit-plugins in the official repositories are recent enough, you might want to download (from github maybe) a particular GEdit plugin that is older, this line serves you as a remainder that this older version should not work with the current GEdit version.
For more details about package relationships (and the official definitions of Breaks and Conflicts) refer to Debian Policy Manual - Chapter 7.