Entity beans are probably one of the most controversial technologies within
J2EE and is a fairly large and complex topic. To summarise some answers for your questions...
(1) Entity beans are generally used to represent persistent information - for example customers within your application.
(2) Yes, since EJB 2.0, entity beans support the notion of Container Managed Relationships (CMR) meaning that you can declaritively define relationships between your entity beans. Of course, you can still program these relationships yourself if required.
(3) In terms of entity beans being destroyed to aid performance, this isn't strictly true. In fact, the
Java objects representing entity beans can be passivated by the container when they have not been accessed for a specific time. This enables the container to free up resources. Subsequent requests for those entity beans result in the activation of those passivated instances.
(4) Most application servers support some degree of data caching. When you introduce clusters into the equation, the issues around data caching become much more complex through aspects such as distributed locking and ensuring the caches are kept up to date.
(5) Entity beans are another tool in your toolbox and provide a very easy framework/architecture with which to build the persistent objects that are a part of your application. Stateful and stateless session beans are generally used to represent business processes, and therefore compliment entity beans rather well.
Hope these (rather simplified) answers help.
Simon