Limit Connections: Why?
The main reason is that connections cost a lot of processing overhead (CPU resources). If you have too many of them going, things will eventually slow down to a treacle.
Max Pooled Statements: Why set it equal to the number of unique cfquery tags that use the cfqueryparam tag and cfstoredproc tags?
The ultimate purpose is efficiency. These types of query involve reuse. The underlying Java engine therefore creates and maintains a pool of prepared statements to be reused by each such query. The number of unique queries is a good starting point. It is unnecessary to allocate more memory space (for a larger pool) than is needed. Furthermore, since Java creates pooled statements based on currently active connections, the connection must be maintained for reuse of pooled statements to be possible.
Timeout: Is there any reason to change it and how would you determine the right setting?
This is how long ColdFusion maintains an idle connection before destroying it. I would leave it at the 20-minute default setting. That falls within the generally accepted range for session timeout in ColdFusion applications, namely, 20 to 30 minutes.
Query Timeout: Any reason to set it to 5 seconds or less?
The Relational Database Management System is separate from ColdFusion. A query may, for reasons beyond ColdFusion's control, run beyond the time that the ColdFusion application expects. The Coldfusion threads that wait on the query would continue to do so indefinitely. If it is critical to your application that a query must run under 5 seconds, or else abort, then you should set 'Query Timeout' to 5 seconds. Charlie Arehart wrote an instructive article on this.