I think you should understand the concept of Domain first.
The Domain is the parent of a Cluster. It contains typically one Admin and one or more Managed servers.
Now the Cluster is a grouping of some or all of these managed servers within the domain.
Hope the diagram here helps understanding.
Once you configure a Domain and a Cluster yourself on a development environment, you'll get to know more about it.
Now Here are the answers to your specific questions
•a cluster contains one or more
logical servers which can reside on
one or many physical servers
True. But let's clarify what you mean by 'logical' servers.
In the Cluster you typically have two or more Managed servers. These servers run in their own JVMs and can be started independently and serve requests independently. Each server will have a unique IP:port address, and it can be directly accessed from the browser. But these server instances can reside over multiple physical servers.
•when deploying a j2ee app to a
cluster, it is tied to one server in
that cluster
No it is not tied to one server. When you deploy a J2EE app to the Cluster, it will get deployed in turn to each server in that cluster. The JNDI is cluster-wide and each server maintains a local copy of the JNDI.
You can look up the object (say an EJB) via JNDI on the Cluster or on the individual server. Also see what types of Objects can be clustered.
•external users of the deployed app
aren't aware of clustering
True.
But in this case you should have an Apache web server or a load balancer or DNS server which takes the request from the browser, and internally maps it to one of the servers in the cluster. If you dont have any of these, you would have to define the cluster address as a DNS name or IP address for the client. See the section "Avoiding Listen Address Problems " on http://download.oracle.com/docs/cd/E13222_01/wls/docs103/cluster/setup.html#wp682940
•the log file of that app is located
on the server it's deployed
True, one weblogic log per server.
•if the server hosting the app fails,
it's okay because the app is in a
cluster and another server will pick
up the work?
Not by default, you have to configure it for failover and replication. This is a huge topic which needs separate reading
•if the server hosting the app fails,
what happens to logging?
Logging stops. You'll see some shutdown or heartbeat errors in the log, or outofmemory or whatever reason for failure. you'll have to restart the server - and logging continues in a new file (depending on your logging settings)