Devices, Contexts, Host Threads What is the relationship?

What are the relationships and rules between devices, contexts, host threads and resources in CUDA 2.0? This is not made particularly clear in the programming guide. A list of relational / structural statements would help, e.g.

Each host thread maintains a stack of contexts.
Calls to use resources must be made with the same current context as when they were created. (?)
Each host thread has a current device.


These may not even be correct, but I’d like to see a list of a dozen or so statements which make it really clear what’s going on with these concepts.