what is flex?
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 developers and not for animators; it has been written for software developers and the paradigm matches the development methodology you already know. If you know Java, C, C++, C#, Delphi, VB, PHP, ColdFusion, Python, Ruby, you can learn Flex with little effort. The goal when Flex was created was to make a development paradigm that developers could learn easily matching the methodology they already know yet create SWF files for Flash Player (and now AIR). Flex has classes, components, a compiler, a debugger, class libraries, and uses XML (MXML) for declarative markup of components. The ActionScript programming language is based on ECMAScript 4 (the language standard behind JavaScript) and has full support for the ECMA XML scripting standard E4X. It also has most of the UI components that you already use ( like button, list, datagrid, combobox, and tree) but it also supports containers like HBox, VBox, TabNavigator, TitleWindow and many others. If you have written software before you can learn Flex easily. Better still is that Flex is compatible with all HTTP servers, version control systems, and any server side programming language, so the knowledge you have of servlets, php, ASP.net, or JSP is really handy. Flex just lets you program the client side in a paradigm you already know and understand.
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!