Inspired by my experience trying to find *Correct*, if only somewhat related info over the last few days [I saw an awful lot of trash], I hope to set at least some of this stuff straight. It also has what I think should be useful info on adding, upgrading, cloning drives etc.
Why does any of this matter?...
To most people frankly it won't. If you back up your Windows device [and you should], you'll want to create a bootable USB stick to work with your backup software. If you want to (re)install Windows fresh, you'll probably create a USB stick with Windows setup files. When you create a USB stick that you can boot from [start your Windows device from], you might be asked by whatever software if you want to create a UEFI or legacy bootable USB stick, and in that case you'll need to know which BIOS method your device uses. [You should still test any bootable USB stick you create BTW -- it's unfortunately common for them not to work.]
A side note: Some -- by no means all -- devices have a hot key that, if pressed while the device is starting, will bring up a menu that lets you choose the drive that you want to boot from, so you could choose to boot from a USB stick for example. Most Windows devices have a hot key that lets you enter the BIOS setup, where you can choose the drive to boot from -- as noted further down however, you may have to restore the BIOS defaults before you can choose another boot drive/device, and That can mean (re)setting several other things in the BIOS back to the way they were before you hit reset. Windows 10 simplifies it a bit, letting you choose the drive to boot from, but how to do that is not as clearly spelled out as it should be -- many Microsoft docs ignore this capability entirely.
tenforums[.]com/tutorials/2294-boot-advanced-startup-options-windows-10-a.html
This following info might come in handy if you have problems booting a Windows device, if you're adding or swapping hard drives, if you're migrating a copy of Windows to a new device/hardware, if you upgrade or (re)install Windows.
What you need to know #1...
Windows uses a set of boot files to start Windows. If those files are on a GPT drive, then the BIOS may only work to start Windows in UEFI mode -- it may even switch to UEFI automatically. An easy way to tell what a device uses is to start Control Panel -> Administrative Tools -> Computer Management, clicking on Storage -> Disk Management on the left of the window. Each connected drive will be shown, along with its partitions. If you right click the box to the left of a drive [where it says Disk 0, Disk 1 etc.] the pop-up menu will either show Convert to GPT Disk or Convert to MBR Disk -- if it shows Convert to MBR, then the drive is GPT, & vice versa. If there's more than one drive, the one with the boot files will have a small partition with no drive letter [nowadays 100MB, but it used to be larger, ~300MB with older versions of win10]. If you hover the mouse cursor over that partition it may also show a tip saying its the EFI System partition. If the boot drive is GPT then the device probably uses UEFI BIOS. If the drive is MBR, &/or if there is no small EFI partition, then the BIOS is probably Legacy or CSM.
More info...
With Windows pretty much any storage device that's seen as a hard drive will be GPT or MBR, which refers to the way that partition, & other data relating to the files stored on that drive, are organized. GPT is newer, more flexible, and probably the better option, but it's not likely to effect performance one bit. GPT drive support started with Windows 7. While Windows will only let you convert a drive to/from MBR or GPT when that drive's empty, AOMEI's partition app [an old GOTD] will handle the conversion just fine, pretty much regardless what's stored on the drive. Needless to say, stuff happens, so back up 1st.
The BIOS itself is the mini-brain of a Windows device, that handles getting all the separate components working together enough so that Windows [or another OS like Linux] will install & work. The BIOS used to be hard coded firmware, but for the last several years the BIOS runs a mini version of a Linux or Linux-like OS -- this is called a UEFI BIOS. Because old hardware tries to live on forever, UEFI BIOS also have various compatibility or legacy modes, usually called CSM today, which mimic the way things used to work. Individual board manufacturers handle CSM differently -- everything may be UEFI, or when CSM is selected, all or parts, e.g. USB drives/sticks, may be UEFI or CSM/Legacy, and you'll have varying amounts of control over setting that.
What you need to know #2...
Windows has 2 separate sets of boot files, one for legacy [CSM] & one for UEFI. If both sets are present, which is more common on external, bootable drives, some BIOS will get confused, &/or start in the mode, CSM or UEFI, that you don't want -- the solution is usually to get rid of the set you don't want/need, but as explained later, that may be easier said than done. If the drive with the boot files is GPT, then they have to reside on a FAT32 partition, and that's where most UEFI BIOS look for those boot files, on a FAT32 partition. The drive does not have to be GPT however to work with UEFI BIOS -- a Microsoft Windows To Go drive is actually MBR, with a FAT32 partition holding the boot files because, as I just noted, that's where most UEFI BIOS look for them. If the BIOS uses CSM or legacy mode, & if the drive is MBR, the boot files can reside pretty much wherever you want, including on the same partition as Windows, or on a small separate partition, like with a Windows To Go drive. Technically there's nothing preventing a reasonably current BIOS in CSM mode from using or booting from a GPT drive, but I think most will not.
An important note: the EFI partition can be anywhere on a drive -- at the beginning, in the middle, or at the end -- it does not matter. In their docs, Microsoft diagrams show the EFI partition at the beginning of the drive, and Windows 10 setup *may* complain if the partition order doesn't match those diagrams, but Windows 10 1809 setup will like as not create partitions in a different order than those docs anyway. So if you're upgrading and want to use an existing drive or drive image from a MBR drive that was used with a legacy [CSM] BIOS mode, you can put that EFI partition at the end of the drive, where it's easiest -- in fact, Microsoft's MBR2GPT tool does just that. [More on that tool later.]
The most reliable way to get a copy of those boot files in place is to use a Microsoft command line tool called Bcdboot. Note that you should start the command prompt running as admin. The easiest way to get the command prompt running is to search for "cmd". EasyBCD can also add those boot files for you, and will easily let you set more options.
docs[.]microsoft[.]com/en-us/windows-hardware/manufacture/desktop/bcdboot-command-line-options-techref-di
This next part gets a bit more techie... Microsoft by default likes people to use GPT drives, which means boot files on a separate FAT32 partition, and they like to harden that partition so that no one can access it. It's possible that that makes it more secure, but I'll leave that up to you. What it also means is that you may have to jump through hoops to see what's on what Microsoft usually calls an EFI partition. It may be easier to back up that small partition[just in case things don't work], delete it, create a new FAT32 partition, add the boot files you want/need, then optionally set it to be a EFI partition -- when you start Windows it will further protect that partition for you.
You can delete the EFI partition & create a new FAT32 partition in most any partitioning app. Setting it as a EFI partition requires a trip back to that command prompt, starting a Windows utility called Diskpart. The following page at the EaseUS site is partly good -- sadly I haven't found better -- showing the Diskpart commands to set the partition ID... they list 2 IDs [without explanation]: the 1st is for the EFI partition, and the 2nd is for a regular partition. The purpose of the article is to show you how to look at the EFI partition's contents -- at least with win10 1809 it will not work as-is. 1st the link, then next paragraph the work-a-round.
easeus[.]com/partition-manager-software/fix-uefi-boot-in-windows-10-8-7.html
What I found is that if I back up the EFI partition using disk image backup software, e.g. Macrium Reflect or Paragon, create & attach a small VHD in Windows [the partition by default is only 100MB] -- Control Panel -> Administrative Tools -> Computer Management -- and restore that backup to that VHD, then the method in the EaseUS article does work with the partition on the VHD [using that 2nd ID].
The 3rd thing to know [perhaps more so if you want to use more than one copy of Windows, or maybe if you're upgrading to a SSD]...
You can have as many drives with boot files on them as you want -- you select which one to use in the BIOS where you set the drive to boot from -- but you only need one set. Those drives/partitions with additional copies of Windows don't need any boot files for themselves, though some people like to have them in place as a sort of fail safe. Say for example you have 2 drives, each with a copy of Windows installed -- if something happens to the drive with the boot files you normally use, you can go into the BIOS settings, telling the BIOS to look for the boot files on that 2nd drive, which will allow you to run Windows on the drive that's still working. Remember that Windows can be on either a GPT or MBR disk, but the boot files Have to be on a FAT32 partition if the drive is GPT.
Note that on many UEFI BIOS Windows 10 takes over, so that if you want to set which drive to boot from -- where the BIOS should look for those boot files -- instead of a list of every drive that's connected, you'll just see the Windows Boot Mgr., so you may have to (re)set BIOS defaults to see your choices again.
The easiest way to add copies of Windows to the boot menu is using EasyBCD -- Google for it since its home site can be a bit difficult to download from [at least last time I tried, which was a while ago]. The hard way to work with the boot files is to use another command line, Windows utility called BCDEdit -- BCDEdit /? for help. Sadly the app is sometimes needed, documentation online is very scarce, and what you do find online will probably not help you.
Cloning Windows Systen drives/partitions...
Should be simple, but unfortunately nowadays some nasty wrinkles can appear, especially with SSDs. The safest bet is to use the paid version of one of the backup apps from AOMEI, Macrium, Paragon etc., because they have a hardware migration option. The only freeware I'm aware of that's also a safer bet is the software that Samsung provides for its customers. Do you have to use one of these apps? *Probably* not, but have a Plan B just in case, e.g. if you have one Windows device [PC/laptop etc.], and if something goes wrong so that you can't start the copy of Windows on it, what do you do?
You can clone a drive/partition with Windows on it easily enough, either using the cloning option in a backup app or restoring a backup -- in the past I'd normally restore a backup, because when I was done I'd still have the drive/partition there in that backup archive, so if anything went wrong, whether right then or days later, I could just restore that backup again. Nowadays the sometimes iffy part is the boot files. The important core of the boot files is the BCD file, which actually represents a registry hive, that can in some cases store stuff like partition start offsets etc. That extra detail that it sometimes stores isn't always necessary, but if/when it's needed, the only way to get it is to install Windows fresh, if you can, or use software to *migrate* the drive/partition. [Information on what data the BCD may store in the registry is Extremely scarce -- some of what little info was published by Microsoft, including some of their more detailed stuff re: BCDEdit, seems to have been deprecated if not outright scrubbed from their site.]
So that said, with the risks hopefully out in the open, working with the boot files can be super easy -- it's only recently, and with some drives that the BCD has become a problem child. AFAIK problems are mainly with some newer SSDs, though info is a bit scarce since I think most people just install a fresh copy of Windows on their new SSD & call it a day -- or give up & return it. If you're keeping the drive connected that has your current boot files on it, you can keep on using those files, simply adding a new entry to the boot menu with EasyBCD.
Note: Windows creates and uses a unique drive ID that's carried over when you clone that copy of Windows. When those boot files start, if they detect 2 drives with the same ID, Windows should automatically create a new ID for one of those drives/partitions. One, nowadays it does not always do that properly, and 2, that new ID probably won't work with the old boot files -- the drive/partition with the new ID may have to be re-added to the boot menu. Here a somewhat technical blog regarding those IDs: blogs[.]technet[.]microsoft[.]com/markrussinovich/2011/11/06/fixing-disk-signature-collisions/
If the boot files are going to be on the new drive, when you clone the old drive or restore a complete backup the needed boot files should be there -- all you should have to do is set the BIOS to look for them on that new drive. If they don't work after being transferred to the new drive, if the boot files are in a inaccessible EFI partition, I think it's easiest to delete that partition, adding a new FAT32 partition in its place. If the drive doesn't yet have any boot files on it, you'll want to add a new 100MB FAT32 partition to hold them. If you can access the boot files on a drive you can edit them with EasyBCD, removing old or unneeded menu entries and adding new ones. You can add new boot files using Windows BCDBoot or EasyBCD [both mentioned earlier], or copy/paste them in place, editing them as needed in EasyBCD. Note 1: if/when you need to edit boot files [BCD] that aren't in use [meaning you didn't use them to start the copy of Windows that you're in] you want to go to the File menu in EasyBCD and select "Select BCD Store". Note 2: to access any partition in Windows Explorer it has to have a drive letter assigned to it, which can be done in Control Panel -> Administrative Tools -> Computer Management [a protected EFI partition just won't let you].
Changing your drive(s) from MBR, used with CSM or legacy BIOS, to GPT using UEFI BIOS...
This comes last because fewer people might be interested in the topic. The 1st thing to note is that the only drive that needs to be GPT is the one that'll hold the boot files -- if say you've got 2 copies of Windows on 2 separate drives, the drive with the boot files should be GPT, but the 2nd MBR drive will continue working fine. That said, if you want boot files on both, just in case, both will have to be converted. I have a copy of AOMEI Partition Assitant Pro 6.6 that was a giveaway, and it seems to do the MBR to GPT conversion just fine. It'll also shrink a partition & add a 100MB FAT32 partition to hold the boot files if you need them. Microsoft has a tool that *might* make the process easier for some.
MBR2GPT.exe is run from the Windows Command prompt [search for cmd & run as admin], only works on drives that have Windows installed on them, and the main requirement is that there's already a EFI partition holding the CSM or legacy boot files. It is not trouble-free by any means, and you may need to go through its logs to find out what went wrong, since the messages it shows are both minimal & somewhat cryptic -- at least you can Google on whatever the log tells you went wrong. The tool also created a 2nd EFI partition when I tried it. More limiting, the tool will only work on a Windows drive that is not in use, and while it can work in Windows, it's designed to be run after booting to WinPE, usually on a USB stick -- running the tool in Windows it may tell you that it can't do its job, & that you have to use WinPE anyway. Long story short, I already have WinPE USB sticks, having jumped through the required hoops, downloading the necessary parts of the Huge ADK, extracting the WinPE folders etc., which is not something I think everyone is interested in messing with. I tried the tool in Windows, was told I had to use WinPE, did so, and it worked, but I was not impressed, at all.
docs[.]microsoft[.]com/en-us/windows/deployment/mbr-to-gpt