You problem is you are treating things individually here. This whole line:
external_acl_type session ttl=300 negative_ttl=0 children=1 concurrency=200 %SRC /usr/local/bin/squid_session -t 300
is a compination of several directives and its meaning is derived jointly by all of these directives/options.
here you are defining your own external acl with a given name 'session'
'session' invokes a command/program called 'squid_session' found in /usr/local/bin
what does squid-session do?
squid_session is a little program which keeps track of the sessions (possibly written in perl)
Usual sys admins would want to redirect their users every time (or once a day) to internet to a company policy page. (or disclaimer, tell them that some info is being logged etc)
They do this by checking for sessions, Every new session is redirected to that page and if the users retry or refresh, they can then browse their required page. Whilist their session is not expired, they can continue to browse without being redirected to the policy page each time, But when the session expires, they will be redirected again to the policy page when they try to hit a website.
So what about the ttls?
When you call squid_session program, you give it options
ttl=300 negative_ttl=0 children=1 concurrency=200
is Time To Live (TTL) in seconds for cached results (defaults to 3600 for 1 hour) and it tells squid_session how long the session should be, before a user's request can be redirected (in your case 300 seconds). Increasing it eg. to 3600, means users sessions will expire evry hour, and they will be redirected to the policy page on their first hit, i.e. they will see it only once and then can browse, refresh without being redirected for the next 60 mins.
if you lower it, everytime you browse you will be redirected (more frequently). If its 1, IF you refresh you will quickly go back to that policy page even on all subsequent refreshes, BUT if you dont refresh, you wont see the effect.
is TTL for cached negative lookups (default same as ttl)
You will need to use a very small negative_ttl eg 1, but I highly recommend 0 in this case, so yours is ok.
is the concurrency level per process (for each squid process, how many (max)requests to handle at a time). Use 0 for old style helpers who can only process a single request at a time.