While there's a lot written about these out there, nothing I've found puts them together, and I have to confess, it's still a bit fuzzy.

Add to this LINQ, lambda expressions, anonymous types, reflection... and it gets more shaky.

I'd like to see some examples, perhaps contrasting advantages/disadvantages, to help me solidify my grasp of these concepts, as well as help me understand when, where and how I should pick between them.

var is exactly the same as writing the full type, so use that when a variable should be of a single type. It is often used with LINQ since you often use anonymous types with LINQ.

object is the root of all classes, and so should be used when a variable will have many different, unrelated/not inherited instances, or when you do not know the type ad compile time (e.g. reflection). It's use should generally be avoided if possible.

dynamic is for objects that are dynamic in nature, in that they can have different methods and properties, these are useful for interacting with COM as well as dynamic languages and domain specific languages.

var is statically type so the Type is known at compile and runtime (so helps catch typos)

dynamic very much similar to objects but not limited as it would be with the Object methods, here the Type is inferred at runtime, it would be used in cases wherein you want to achieve some dynamic behaviour.

Well for object it ain't having any such members which you would be using, Generics would be more preferred in such cases