A note about version numbers
MAME is a constantly growing and evolving project, written in the authors' free time. Updates are sporadically (but frequently) provided with no official time table for release. There are official updates which increase the decimal part of the version number (i.e. after official version 0.99 came official version 0.100) and there are unofficial updates that occur between official updates, which add a u and the unofficial version number (e.g. 0.108u2). The unofficial versions are not as readily available as the official versions, and typically require that you compile them for yourself.
The best place to obtain the latest version of MAME for Windows is the Main downloads page on the MAMEDev homepage. MAME is distributed in a self-extracting archive, meaning you are not required to use a program such as 7-Zip to extract the contents.
You will also find the option to download the source code to MAME, but obviously you will have no use for this unless you are a programmer, knowledgeable in C++, and have any intention of modifying and compiling your own version of MAME (something that this guide has no intention of delving in to.)
MAME has it's own build in user interface, so a front-end is not required, but if you are looking for a Windows version of MAME that launches from a typical WIMPy (Windows, Icon, Menu, Pointer) interface, there is MAMEUI64, which can be downloaded from the official MAMEUI homepage.
The official Linux build of MAME is sometimes referred to as SDLMAME, which is the official cross-platform variety of MAME since SDL is supported on a number of platforms including Linux, Windows, and Mac. One can build SDLMAME from the source code by syncing to the MAMEdev GitHub repository. Versions of MAME are also contained in various package managers for different distributions of Linux.
SDLMAME contains the same built-in user interface as the Windows build of MAME, but there are numerous front-ends that are available for use with SDLMAME such as Qt4 based QMC2.
MacMAME is available from MacMAME.org. The builds there are often out of date.
Installing MAME on your system is a relatively simple process. Simply double click on the self-extracting archive that you downloaded, and choose which directory you would like to extract the contents of the archive to. (C:\MAME is the most common choice for this operation.) If you did not download a self-extracting archive, then use your compression software of choice to extract the contents of the archive to a directory. This operation will deposit a myriad of files and (empty) directories that MAME needs or might need.
Note: Any new version of MAME can be safely extracted on top of (thereby replacing) an old version. The same is not necessarily true if you try to replace a newer version with an older version, so if for some reason you need to do this, it is better to extract an old version into a separate directory and not into you usual MAME directory. Variations of MAME can typically live safely together in the same folder.
Once MAME is extracted into a directory, you can run it right away, but you will probably need to download ROMs to play with before you start using MAME. Due to the legal issues surrounding ROMs, this guide will in no way aid the user in locating MAME ROMs available for downloading. Suffice it to say, Google is your friend.
Downloaded ROMs typically need to go in the ROM folder that is contained in your MAME directory (e.g. C:\MAME\roms), but MAME can be configured to located ROMs in a different folder, or even multiple folders. By default, it will only look in the roms folder supplied with MAME until you direct it otherwise.
Additionally, a very small percentage of ROMs that MAME supports (less than 1%) require sound samples in order for all of the sound effects to be heard properly while playing a game. This may be due to incomplete knowledge of the sound architecture used by a game, or the use of analog sound circuits that can not be replicated in digital software. These sound samples are merely wav files containing the missing sounds and are programmed to be played by MAME at the appropriate moments. They are freely distributable, and you can download them from MAME's official homepage or from Twisty's MAME Samples Collection page. Twisty is a MAME supporter who has maintained an up to date collection of MAME samples, as well as a few enhanced "unofficial" sample replacements. Downloaded samples belong in the samples folder that resides in the same directory as MAME (e.g. C:\MAME\samples)
There will be a few more folders in the MAME directory, such as artwork or ctrlr, that you are not obligated to add files to unless you want to. This will be discussed in the configuration section and the support files section. If you extracted the MAMEUI archive, you will notice many more folders than those included with command-line MAME. These folders typically hold art support files that only come in to play while you are looking at the game navigation window, and will also be discussed in the support files section. Once you have some ROMs, and optionally some sound samples, you are ready to play!
Note: To create a new mame.ini file, bring up a command-line terminal, change your directory to where your MAME executable is located, and type:
to generate the ini file where most of MAME's settings are saved to and loaded from.