<p>What are the key differences between Flash and Flex?  I have over five years experience with flash and feel very comfortable developing with it and ActionScript3.  I find myself more and more curious about Flex and want to know when it is best to use flash or flex.  Also, is everything that can be done with MXML, able to be done with AS3?  I have a strong understanding of AS3 and OOP and would like to know the diffrences between using AS3 and MXML in Flex.</p>

Flash and Flex provide different ways to produce different things. I am not familiar with Flash, but I would expect that it is dependent on a time-oriented way to produce something, whereas Flex is geared toward more traditional software development. That is, rather than dealing with time and frames in Flash, one is dealing with describing where components should be placed with MXML and how those components work with ActionScript.
One should also be able to write a Flex app with just AS3 and no need MXML.
The main difference between AS3 and MXML in Flex, as far as I know, is that MXML is not intended to be used with application logic, but rather it is intended to be used like HTML/CSS in web pages and puts components and content onto the Flex app. ActionScript is used to program behaviors, components, and other things outside or what MXML does. Thus, if you want to attach an event to a component one would write ActionScript code.
Hope that helps. I am still learning about Flex myself.