Soft Fork
A soft fork is a software update that remains compatible with previous versions of the software. This implies that participants are not required to update the software to continue participating in the validation and verification of transactions. Implementing a soft fork is much easier, since it only requires a majority of the participants to update their software. All participants, whether or not they have executed the update, will continue to recognize new blocks and maintain their compatibility with the network. One point to note, however, is that participant functionality is affected by skipping the update. An example of a soft fork would be the implementation of a new rule stipulating a block size change from the current 1MB (1,000KB) to 800KB.
Participants who skip the update could continue to validate new incoming transactions. Now, when mining new blocks, the network would reject the blocks (and, therefore, the work) of those miners who had updated their software.
Therefore, soft forks represent a gradual update mechanism, the purpose of which is to encourage participants to execute the update so as not to see its functionalities reduced.
Hard Fork
A hard fork is a software update that is not backward compatible. Therefore, to continue participating and validating new transactions, it would be essential to update to the new version of the software. Those participants who reject the update are separated from the network, with which they will not be able to validate new transactions. This separation results in a permanent divergence of the blockchain.
As long as the minority chain continues to receive support – that is, there are still participants carrying out mining operations on said chain – the two chains will coexist simultaneously (for example: Ethereum Classic and Bitcoin Cash).