Welcome to the confusing world of overly generic software.
(1) - doesn't matter. GCInterval is how often the "cleanup" thread runs, idle timeout is how long a connection is unused before the cleanup thread disposes of it.
(2) "GC" has nothing to do with the java "gc" - its a thread whose sole purpose is to cleanup the pools. As I recall, the "GC" function kills pooled objects that have been checked out too long... kind of inappropriate for connections in an app server, transaction timeout should take care of this instead. Any setting larger than the transaction timeout should be fine and have no effect.