First rule: keep all the pdbs from every build you release: both from the exe and any other dlls you produce
Second rule: try to get reproduction steps, as being able to reproduce a crash on your own machine is a far more effective use of your time than wading through a crash log.
Beyond that you're at the mercy of the gods as to how much information you can get out of a release build crash. Some crash analysis gurus can work miracles with a crash dump, but for the rest of us mere mortals it depends on the nature and reproducibility of the crash.
One thing to check is that your optimised release builds have got the 'Omit Frame Pointers' setting as 'No'. That alone will make debugging much easier as 99% of the time you'll get a vaguely meaningful stack.
Be aware that most of the time the 'this' pointer will appear as NULL in a release build, but sometimes you can navigate up and down the stack to find where it is passed as a parameter. In general though, don't rely on the display of variables in the debugger. If the values look sensible then they're probably right. If they look wildly wrong then either that's your bug, or that's just a bogus display of a variable that's been optimised out.
Oh, and check out the legendary John Robbins (the Bugslayer) for some great crash dump analysis resources.