These two small programs -- `math.exe` is the same as `wolfram.exe`, and `MathKernel.exe` is the same as `WolframKernel.exe` -- are kernel loaders, which provide an interface to the same main kernel code residing in the dynamic library `WolframEngine.dll` (also known as `mathdll.dll` in versions prior to 10.1.0). Both accept the same command line options as documented for [`wolfram`](http://reference.wolfram.com/language/ref/program/wolfram.html) and [`WolframKernel`](http://reference.wolfram.com/language/ref/program/WolframKernel.html). The main difference is that `wolfram.exe` is a console application, while `WolframKernel.exe` is a GUI, windowed application offering some basic copy and paste, font selection and scrolling functionality. The standard behavior of the Windows OS is that upon launching a console application, it is attached to the console of the parent process (for example, `cmd.exe`) if present, otherwise a new console is created. That is not the case for GUI applications, which by default run without a console, and therefore do not have `stdin`, `stdout` and `stderr`. While the latter is [not impossible](https://devblogs.microsoft.com/oldnewthing/20090101-00/?p=19643) to [code around](http://www.tillett.info/2013/05/13/how-to-create-a-windows-program-that-works-as-both-as-a-gui-and-console-application/), it is hardly necessary in this case, as `wolfram.exe` is provided as a true console application suitable for scripting purposes. The kernel launchers organization is slightly different on other operating systems: on Linux, `math`/`wolfram`/`MathKernel`/`WolframKernel` are all the same shell script, which launches the kernel loader binary. On MacOS X, there is only a `MathKernel`/`WolframKernel` binary loader. Something to keep in mind about the documentation that it is the same on all platforms, and so is written as much as possible in a general and platform-independent manner, without delving into OS specifics in many cases.