Lets get the Wikipedia description first:
Haxe is an open source high-level multi-platform programming language and compiler that can produce applications and source code for many different platforms from a single code-base.
Haxe includes a set of common functionality that is supported across all platforms, such as numeric data types, text, arrays, binary and some common file formats. Haxe also includes platform-specific API for Adobe Flash, C++, PHP and other languages.
And the official description:
Haxe consists of a high-level, open source programming language and a compiler. It allows compilation of programs, written using an ECMAScript-oriented syntax, to multiple target languages. Employing proper abstraction, it is possible to maintain a single code-base which compiles to multiple targets.
Haxe is strongly typed but the typing system can be subverted where required. Utilizing type information, the Haxe type system can detect errors at compile-time which would only be noticeable at run-time in the target language. Furthermore, type information can be used by the target generators to generate optimized and robust code.
From haxe.org - manual
A long time ago, there was MTASC, the ActionScript 2 compiler which brought Flash to the entreprise, and its author, Nicolas Cannasse, decided to create a new open-source language inspired by ActionScript and ML languages like Ocaml: Haxe.
It was already the most modern compile-to-JS language, but of course a big focus from the author's company was games, and likewise the initial community using Haxe was certainly oriented into gaming more than web apps.
Quickly small companies and indie developers wanted to just code everything with Haxe: PHP on the server, JS for the web interactions, Flash for games, then C++ to look for more performance and freedom in games.
NME and OpenFl appeared as the first big efforts to reproduce the Flash API for desktop and mobile - people have started, abusively, assimilating OpenFl with Haxe, while it was just one library among many.