A simple definition to "what is flex" would be: Flex is a way to make/create SWF files!
Flex is a way to create SWF files that run in Adobe Flash Player. It is a development paradigm that compiles to SWF. It really is that simple but often we make the definition much harder. Just like Flash can create SWF files, so can Flex, but the way you develop is completely different.
Flex is built for making applications... rich client side application behavior. It has not been built for making web pages, banner ads, or server side logic it has been built for creating client-side applications that run over the Internet talking to remote servers. Flex has been used to make some really great apps like Buzzword (Document Editor like Microsoft Word but in the web), Picnik (Photo Editor/Manager for touching up your best snapshots), Oracle Sales Prospector (An enterprise ERP application.) The real key is that these examples provide an application experience just like desktop software that run on the web (Adobe Flash Player) and on the desktop (Adobe AIR)
In summary, Flex is a development paradigm that allows you to write software for the web and desktop that many people can use compatibly today. It leverages the tools, servers, and development models that you already know and allows you to write the next generation of software compatibly.
Another definition would be: A development platform that is revolutionizing how the world writes and deploys software!