A fork is the permanent divergence of an alternative operating version of the current blockchain.
Forks come into existence when:
-a 51% attack occurs
-a bug in the program
-more commonly a new set of consensus rules come into existence. These happen when a development team creates and inserts notably substantial changes into the system. The successful fork is decided by the height of their blocks.