If you set it to 0 or 2, it will either not cache any requests, or it will cache those that you specifically requested to cache. This means that Magento will have to explicitly request the results of cached queries (I'm not sure if that is the case). If you set it to 1, it will cache all requests except those that explicitly request the request cache.
Table cache refers to potential open file pointers. It could be consumed fairly quickly and simply roll back unused records as needed. From MySQL Documentation :
The system variables table_cache and max_connections affect the maximum number of files opened by the server. If you increase one or both of these values, you may encounter a limit imposed by your operating system for each process on open file descriptors. Many operating systems can increase the limit of open files, although this method varies widely from system to system. Consult your operating system documentation to determine if it is possible to increase the limit and how to do it.
table_cache is associated with max_connections. For example, for 200 simultaneous running connections, you must have a table cache size of at least 200 * N, where N is the maximum number of tables per connection in any of the queries that you execute. You must also reserve additional file descriptors for temporary tables and files.
Make sure your operating system can handle the number of open file descriptors specified in the table_cache parameter. If table_cache is too high, MySQL may end up with file descriptors and refuse connections, fail requests, and be very unreliable. You should also consider that the MyISAM storage engine needs two file descriptors for each unique open table. You can increase the number of file descriptors available to MySQL using --open-files-limit startup for mysqld. See Section C.5.2.18, βFileβ not found and similar errors β.
The open table cache is stored at the table_cache write level. The default value is 64; this can be changed using the -table_cache option for mysqld. Please note that MySQL may temporarily open more tables than this to execute queries.
MySQL closes an unused table and removes it from the table cache in the following circumstances:
When the cache is full and the thread tries to open a table that is not in the cache.
When the cache contains more than table_cache entries and the table in the cache is no longer used by any threads.
When the table wash operation occurs. This happens when someone issues a FLUSH TABLES statement or runs mysqladmin flash tables or the mysqladmin update command.
When the table cache is full, the server uses the following procedure to find the cache entry for use:
Tables that are not currently in use are deallocated, starting with the most recently used table.
If you need to open a new table, but the cache is full and no table can be freed, the cache is temporarily expanded as necessary. when the cache is in a temporarily extended state, and the table is used for an unused state, the table is closed and freed from the cache.