My Win10 specs say it was installed in UEFI mode. Therefore I disabled Secure Boot, Fast Boot, and enabled Legacy Mode/BIOS compatibility.
Enabling BIOS/CSM/legacy mode on a system you want to dual-boot with Windows installed in EFI/UEFI mode was a mistake. See this page of mine for all the gory details. The short explanation is that enabling BIOS boot support makes it possible to install Ubuntu in BIOS mode, which will then complicate dual-booting with Windows in EFI mode. You want both OSes to be installed in the same mode, and with Windows already installed in EFI mode, that means doing an EFI-mode install of Ubuntu, too. That said, even if you ended up booting your installer in BIOS mode, it should not have hung in the way you describe. OTOH, there are occasional problems with video displays and other hardware that vary with boot mode, so there's a small chance that switching to an EFI-mode boot will fix your problem.
Also, disabling Secure Boot is probably unnecessary. Ubuntu supports Secure Boot and should boot and install with Secure Boot active. Secure Boot provides some protection against pre-boot malware, so it's best to leave it enabled unless you have good reason to think it's actually causing you problems. That said, there are some rare computers with flaky Secure Boot implementations that don't work properly with Ubuntu, so disabling Secure Boot is sometimes necessary. I don't recommend doing so unless you think you're running into Secure Boot problems, and those are usually pretty obvious -- you typically get a message saying that the installer couldn't be booted because of a security violation. That said, disabling Secure Boot is not, by itself, likely to make it harder to install Ubuntu, so this isn't the sort of thing that's likely to have led to the problem you're experiencing.
When I choose install Ubuntu or try Ubuntu, it loads the splash screen which says Ubuntu, and some dots flashing in order. The system freezes in this screen and i'm forced to hard restart my laptop.
This problem can sometimes be overcome by adding the nomodeset
kernel option. You can do this by using one of the options in GRUB menu.
It's also possible that the kernel in the 16.04 release of Ubuntu is lacking hardware support required to boot your computer, particularly if it's a relatively new model. If you're trying to boot 16.04 GA (the version released in April of 2016) or 16.04.1, instead try 16.04.2, which comes with an updated kernel. You might also want to try 17.04, which comes with the most recent kernel of any Ubuntu.
By the way. I am able to run Ubuntu 16.04 64 bit on a virtual machine inside windows.
This is irrelevant, since it uses virtualized/emulated hardware, not the computer's real hardware. Don't spend more time chasing this distinction, since it would be a dead end.