1-) A logon session[2] is managed by the Local Security Authority[2], and manages the scope of a user logon. These are created primarily by the winlogon process, but also secondarily by API functions such as LogonUser, CreateProcessAsUser, and CreateProcessWithLogonW, or by applications that use these functions, such as the runas command.
A logon session isn’t tied to any specific Object Manager[2] concepts as window stations and desktops. It’s basically just a block of information containing the logon SID and some cached security information about the account. This block of information, this logon session, is what an access token points to.
2-) The other type of session is sometimes called a Terminal Services session, Terminal Server session, Remote Desktop session, logon session (as confusing as that is), user logon session, or user session. Usually, though, it’s just called a “session”, without further qualification.
This is the type of session that you’ll usually hear about, and is what window stations belong to. This type of session came about to support multiple interactive GUI logons, as provided by Terminal Services (now known as Remote Desktop), and is now also used to support Fast User Switching. Sessions provide the necessary isolation between the Object Manager objects associated with each user logon.
http://stackoverflow.com/questions/4686897/sessions-window-stations-and-desktops
In summary logon session is an application concept which can be done with runas, it is not related with kernel, and it is all about running an application with different user account(that means different security context).
But, kernel session or terminal session or whatever it is called, is about kernel session space and it can be done by Fast user switching or remote connection like terminal services. Kernel switches session space and it results switching switching video card driver.
I hope all these information is right.
Thanks…