Are they the same thing? If not, what are the differences?
Adobe Shockwave was a media player (formerly by Macromedia), and can be used to run Adobe Director applications (usually in a web browser as a plugin). It has largely been superseded by Adobe Flash (also originally by Macromedia). IIRC, Flash was originally just a new fancy version of Shockwave, usually referred to as Shockwave Flash (which is where it gets confusing). This is why most Flash objects have the SWF extension.
Flex is built on top of Flash, and is designed to simplify a few aspects of flash. Think of Flex like a toolkit (à la Qt and GTK) for Flash.