What exactly is the purpose of TimeOut key in launchd plist?
Launchd just passes the TimeOut value to the job. This is different from ExitTimeOut, which is used by Launchd to send a KILL signal to the job. Your specific requirement should be implemented within your job.

From a post in June 2010 in the Darwin-Kernel mailing list:
Re: What is TimeOut ("idle time out") in launchd?


  This specifies the idle exit timeout. If your daemon hasn't received a request in this amount of time, it should quit. Notably launchd does not implement this for you; it's up for you to implement the timeout in your daemon's main event loop.