A logical thread is a concept that dates back to COM, OLE and RPC and also applies to remoting scenarios. A logical thread traces the execution of a synchronous call as it propagates across various boundaries including COM apartments, RPC and remoting boundaries.
This is a really important concept when you consider the possibility that two completely unrelated components might attempt to do operations in the same boundary. Technologies such as COM must be able to distinguish between a new call entering their boundary (apartment) and a completely unrelated call in order to guarantee things like synchronous execution.
Logical threads are fairly difficult to explain in a small SO post. My recomendation is to google / bing for "RPC logical thread" and go from there
Thread Local Storage is quite a bit easier to explain. It's a storage unit that is unique for every thread in a process. The basic idea is that you first allocate a key. You can then query each individual thread for an item with that key. Each thread will hold a different space open for the key and hence have a separate value.