I am not sure what is needed on MS Windows, but on linux, it is enough to have the fastboot binary (look for corresponding package available for your distribution - e.g. android tools or complete Android SDK).
Then, you can download Micha's flashtools and run the appropriate script in CLI while the phone is attached via USB cable and booted to fastboot (aka download aka bootloader) mode.
The "flashtools" are just bourne shell scripts (using fastboot) and copies of GPT partition layout and images for modem/recovery/boot/etc. partitions. Look at the scripts, it is easy to understand what they actually do.
Note that the scripts have "fastboot reboot" as the last command, which may not be what you want. E.g. if you come from another ROM or older partition layout, Micha says that you must first run "flash_core.sh" and then "flash_partition_table_and_core.sh". It is worth to edit the scripts and to comment out the last command "fastboot reboot" and handle the reboots manually, because booting normally is not what you want in this phase.
"fastboot reboot-bootloader" gets you again to the bootloader mode (equivalent of "volume down" while powering on). If you want directly to recovery, there is no such command for fastboot. Use "fastboot reboot" and press "volume up" instead.
Once you are in TWRP with the unified_single partition layout and you have already re-formatted all the partitions (system, cache, data), you may find that there is no way how to access the internal storage of the phone - adb push does not work because your computer is not authorised.
What you can do is to switch TWRP to "adb side-load" mode (I think it is in "Advanced" section) and then run "adb sideload what_you_want_to_flash.zip" on your computer's terminal. It is effectively the same as running "install" and choosing "what_you_want_to_flash.zip" in TWRP.
"what_you_want_to_flash.zip" is obviously CM12.1 ROM, GAPPS, etc.
EDIT: a short follow up on Micha's naming of the various partition layouts:
- "aries_core_separated" - the original layout by Xiaomi for Mi2. For all ROMs until (incl.) CM11.2.
- "aries_core_separated_single" - as above, but system is enlarged and system1 is smaller. (Possibly also other partitions like modem1, boot1 are shrinked, but still exist.)
- "aries_core_unified" - data and sdcard merged together, this is used by Lollipop ROMs. (CM12 by Micha or by Bugers until Dec 2015.)
- "aries_core_unified_single" - as above, but system is enlarged and system1 is smaller. (Also other partitions like modem1, boot1 are shrinked, but still exist.)
- "aries_core_unified_single_xiaomi" - the new Xiaomi layout since MIUI 15.11.16 (or so). data and sdcard are merged, system is enlarged, and a bunch of redundant partitions (boot1, modem1, system1) are completely removed and therefore the partition numbers have changed! Suitable for CM12 by Bugers since January 2016.