Hard Forks
Occurs when there is a permanent separation in the blockchain. This is likely due to a disagreement on amendments to be made and Nodes that do not adopt the new protocols will not be able to validate blocks created by the Nodes that adopt the changes.
Soft Forks
Occurs when there is a temporary separation in the blockchain. This is likely due to certain nodes failing to adopt the new protocols during an update. This can be due to (but not limited to) technical errors or nodes simply failing to follow the new protocol.