A fork is a change to a protocol or a piece of code. Forks are usually introduced to upgrade a project. In the open source community, forks exist because many individuals choose to download and run the same software at different times and do not always update. If two users download and run version 1 of a software, and only one user upgrades when version 2 is released, the user who updated is running a fork of version 1.
This could become a problem in a system like Bitcoin, where consensus is critical to knowing how much money one has. If nodes run different software with different rulesets, some nodes may approve of some transactions or blocks while other nodes do not. The network would fracture, and the ultimate truth upon which the Bitcoin network agrees, the decentralized ledger, would be destroyed. This is why Bitcoin development must remain cautious and conservative.
There are essentially two types of forks: soft forks and hard forks. Soft forks do not break compatibility (they are backwards compatible) between the old version and the new version and thus do not require all nodes to upgrade. Hard forks are not backwards compatible and thus require all nodes to upgrade. Hard forks are avoided at all costs within the Bitcoin community, while soft forks are strongly preferred.
When a project experiences a hard fork, and many members choose to follow the fork while many others do not, a network can split in two. This has occurred several times as projects have attempted to branch off from Bitcoin and change consensus rules. These rogue projects are called forks, but they are no longer a part of the original Bitcoin project or network. While forks cause social friction and confusion, they do not harm the Bitcoin network on a protocol level.