Alex, that is a pretty... well, obfuscated definition.
I supposed at the fundamental level they define as:
Clustering -- Making a group of application providers appear as one
application provider.
Load Balancing -- Shifting the computational task of an application
across various providers based on some predetermine heuristic.
Now, in real terms of J2EE applications, they are somewhat more
specific, with some variance from server to server.
When you say "Clustering" you usually means something where
applications servers share an application as well as runtime state for
that application across multiple machines so that if one fails another
machine can resume executing the application with all state information
in tact. That is in Cluster A [ X Y Z] there is some method where a
user connects to Cluster A and during his use if machine X fails, Y and
Z can continue the service uninterrupted. This usually means that at
any point in time, at least 2 machines contain the state information
for any one user. Could be all of them do, but at least 2 do.
When you say "Load Balancing", you usually are talking about something
either less fault tolerant than "Clustering" or stateless past a
request. In Group A [X Y Z] I make a request. It is assigned to X
process and X returns the result. If the application is stateful, then
my session will be bound to X subsequent calls to the application will
go to X as well ("Session Affinity"). If the app isn't stateful, then
they will just be re-assigned by the heuristic again. "Load Balancing"
in this method tends to be optimized for speed (No replication
overhead, so more computational resources are available to the user)
but not as fault tolerant as "Clustering" (if the server I am using
dies, my session is lost).