The term Flash can include any of the other terms defined below, and I find that saying "Flash" without specifying exactly what you mean can be confusing and misleading. Case in point: I'm not sure what you specifically mean when you say "Flash" in your question. Is it Flash Player? The authoring tool? Or the whole collection of technologies that fall under what Adobe calls the "Flash Platform"? To help clear all this up, let me define the technologies involved in creating Flash and Flex content so that we're all using the same terminology here:
Flash Player is a runtime for rich media content in the browser. There is also Flash Lite to run Flash content on older or low-end mobile devices, and Adobe AIR extends Flash Player to allow content authors to publish native desktop and mobile applications that can integrate with things like the file system, windowing systems, and device sensors like the accelerometer and camera. Collectively, Adobe refers to these as the Flash runtimes.
Flash Professional (often called the Flash authoring tool or the Flash IDE) has traditionally been the primary application used to create content that runs on Flash Player. It is very designer oriented with timelines, layers, and visual drawing tools. Software developers may find this application disorienting and limited compared to other development tools that focus more on code, like Flash Builder (see below). When someone says, "I built something with Flash", they often mean the Flash authoring tool, but that's not always the case. For that reason, it's good to always clarify to avoid any confusion.
ActionScript is the primary programming language supported by Adobe to target Flash runtimes. The current version is ActionScript 3 (abbreviated as AS3), which has been supported since Flash Player 9. Content created with older versions of ActionScript can still be run in the latest versions Flash Player, but new features are only supported when using ActionScript 3 to create new content.
Flex is a collection of technologies designed to create rich applications that target the Adobe's Flash runtimes. Though saying "Flex" previously had the same ambiguity as "Flash", the Flex brand name is becoming more and more focused on the Flex framework and SDK, described below.
The Flex SDK consists of compilers, a command-line debugger, and the Flex framework. The included compilers are:
1. MXMLC, an ActionScript and MXML compiler to output the final SWF file for deployment to Flash Player.
2. COMPC, a static library compiler for ActionScript that outputs SWC files.
3. ASDOC, a documentation generator built on the compiler technology.
The Flex framework is a collection of ActionScript classes designed to build Rich Internet Applications. It includes things like user interface controls, web services and other connectivity classes, formatters and validators, drag and drop, modal windowing, and component states. These classes are in the mx.* package. Generally, when developers say "Flex" without any clarifying information, they mean the Flex framework and not the product formerly known as Flex Builder.
In 2011, Adobe donated the Flex SDK to the Apache Software Foundation. It is now called Apache Flex and it is fully managed by the community rather than Adobe. However, Adobe employees continue to contribute to the project, and Flash Builder (see below) continues to support new SDKs released by the Apache Flex project.
MXML is an XML-based markup language used by the Flex compilers to make layout and placing components into containers easier. The tree-like structure of XML make the containment hierarchy easier to visualize. MXML is actually converted to ActionScript during the compilation process.
Flash Builder (formerly known as Flex Builder) is a development environment that allows developers to build different project types to create SWF files that are deployed to Flash runtimes. It is built on the Eclipse platform and is more familiar to software engineers. Flash Builder supports projects built with Flex or pure ActionScript. Flex projects include the Flex framework. ActionScript projects are the most basic you can work with, starting with a single class and an empty canvas, and the Flex framework is not included.
Flash Builder does not replace Flash Professional. Some people who have traditionally used Flash Professional may now choose to use Flash Builder instead. Often, these are software engineers who appreciate or require the advanced development tools offered by Flash Builder or don't work heavily with assets designed in a visual tool. Some developers may write their code in Flash Builder, while choosing to compile their projects in the Flash authoring tool. Often, these developers are also designers, or they are working with other people who are designers. In this situation, there may be many graphical assets created in the Flash authoring tool, and it could be difficult or simply inappropriate to bring them into another environment.
The Flex framework is specifically designed to build applications. It includes many traditional form controls (buttons, lists, datagrids, etc) and much of the code runs on an advanced component framework written in ActionScript. Not everyone is building the sort of content that Flex is designed to create, and Flex does not replace traditional Flash development practices for everyone. It is a better approach for some developers, but may not be right for others. More design-heavy websites, such as those created for movies, music, energy drinks, advertising campaigns, and things like that probably shouldn't use the Flex framework. These types of content might be better suited to Flash Professional or a pure ActionScript project in Flash Builder. Similarly, little widgets you put into the sidebar of your website or on your profile in a social networking website may need to be built with pure ActionScript (without the Flex framework) because they require a smaller file size and they probably don't need a big complex component architecture designed for larger applications. When targeting Flash runtimes, your development environment, frameworks, and workflow should be chosen based on your project's requirements and goals.
Best Answer
From an encapsulation perspective, they aren't related in any way. However, Adobe does distribute the AIR SDK with their versions of the Flex SDK.
When using an IDE, such as Flash Builder, a certain directory structure is expected, which includes the AIR SDK in a subdirectory of the Flex SDK.
When using Apache Flex, Apache does not have the rights to distribute the AIR SDK, so it is up to the user to combine the AIR SDK and Flex SDK in a way that makes it easy to use the SDK with Flash Builder. However, the Apache Flex folks are working on an "easy install" tool to prepare the Apache Flex SDK for use with Flash Builder. The tool downloads all the relevant non-Apache binaries and provides you with a finished package.
It is perfectly valid to use the Flex UI Framework without AIR; and to use the AIR SDK without Flex. However, in the Flex SDK, specifically in the mobile component set, I believe there are some dependencies to the AIR SDK. And to use AIR, you will need something to compile it. MXMLC from the Flex SDK is one option.
I'm going to attempt to answer some of your specific questions:
This is true; except I do not believe that AIR has HTML/JS support for smartphones in the same way it does on the desktop. The Mobile AIR Runtime does not include an embedded browser like the desktop version does. However, you can make use of the browser on the device using StageWebView.
This is correct. The Flex Framework provides a lot of UI Component classes, in addition to a framework for building your own UI Classes. To be clear, the Flex SDK includes more than just the Flex Framework, including a step through debugger and the command line compiler.
This is true; the Flex SDK includes a version of the AIR SDK. Flex and AIR are not on the same update schedule; so Flex would only get updated w/ the latest version of AIR when a new Flex release comes out. There are ways to overlay a new Air SDK onto a Flex SDK if you need it. Here are some instructions. I forget the version of AIR included in Adobe Flex 4.6, but I think it is AIR 3.2. AIR 3.4 is the latest from Adobe.
It is worth noting that Flex has been donated to the Apache Foundation; and they have already released Apache Flex 4.8.
I'm not entirely clear on the answer to this. Most people use MXMLC from the Flex SDK to compile AIR based applications. Even if you use Flash Builder, MXMLC is used under the hood. If you use Flash Professional, I believe it has it's own AIR Compiler but I do not know if it is based on MXMLC. Flash Builder 4.7 will include a brand new compiler--code named Falcon.
In theory yes. I don't know anything about FlashDevelop, however I did understand it had support for Flex. I assume, by extension, it also has support for AIR.