It is a huge subject but in a nutshell clustering is the ability to increase computing power (throughput) by adding nodes into the cluster. Failover is the ability to detect a failure in an application component and switch to another working component without losing the application functionality.
IMHO both of them are intrinsic with each other because failover depends on a cluster environment to get the ability to choose another node to replace and existing one which has failed.
clustering offers loading balancing and fail over capabilities therefore achieves several service level requirements.
BEA 8.1 Certified Administrator, IBM Certified Solution Developer For XML 1.1 and Related Technologies, SCJP, SCWCD, SCBCD, SCDJWS, SCJD, SCEA,
Oracle Certified Master Java EE 5 Enterprise Architect