Choosing the correct collection

You are trying to determine the different collections that .NET uses. You try to come up with a comparison of the different collection types by performance and use case.

When should you use a generic or nongeneric collection?
What’s the difference between the Dictionary- and List-based collections? When should you use one or the other?
What’s the difference among the Stack, Queue, and List collections?