I am not an expert of Android. I am not a beginner either. I am an enthusiastic end user. I will explain my understanding of general concepts, and methods to get your device to do what you want it to. My first device was a Galaxy Note, which I kept at Gingerbread (I didn't upgrade to newer versions of Android). Now that Gingerbread is a dinosaur, I am setting up a Galaxy Note 3, which is faster and has more memory, and will thus manage the higher system requirements of later versions of Android. I have also helped a friend with his Note 2. In 2013, someone guessed the number of custom rom users to be at around 12 to 15 million, which would be around 10 percent. I'd guess 5 percent.
The following notes have to do with obtaining “root”, which allows customization of the Android operating system, or allows the use of applications with higher privileges for the same purpose. An example of a customization would be to allow you to change how big or small text and icons appear on your device. Another example would be to allow you to uninstall applications that you normally can't uninstall (to free up space and improve the device's performance, to reduce the possibility of lag/unresponsiveness). Much more functionality can be added, but I won't go into specifics. Some functionality isn't allowed by your carrier, or by law, but isn't necessarily immoral, depending on your values.
The notes also have to do with the use of alternative versions of Android, ones that already come with different sets of customizations (and usually include root access). By some twist of bad language use, they are called “custom roms”. These alternative android operating systems can be installed on the device, by one of two methods, using modes which are already included with the android device. One method is to boot the device into “download mode”, and installing from another device/computer via USB (via ADB and Odin, explained later). The other method, is to install the operating system by booting into “recovery”. Download mode and recovery mode are just two alternative mini-operating systems for the purpose of running specialized operations that require the main Android operating system be offline (not presently running or "in operation").
In order for your Android device and your computer to communicate via usb cable, some tools/drivers are needed that are not included on the computer. There are many sources providing such things. The site forum.xda-developers.com is usually the most relevant. There you can find ADB, fastboot, and drivers, all in one. ADB and fastboot are for sending commands to the device. The drivers are for accessing the files on the device via your operating system's file browser (you can usually get this driver from your device's manufacturer's page, but this driver in particular comes from google and should suffice). Tools like Samsung Kies are usually not needed, because you can use Odin instead. Kies is a huge bloated download. So is the Android SDK from Google. If the all-in-one solution at xda-developers website doesn't work for either adb or the driver, my next try would be the drivers from the manufacturer.
With the installation of ADB, you can use Odin to install custom recoveries, custom roms, and even firmware. Heimdall, is an open source alternative to Odin, but I have yet to try it, because the guides I have followed in the past only mentioned Odin. Open source software can sometimes be late in arriving on the scene. AFAIK, Odin and Heimdall are just GUIs for ADB, which is a command line tool.
However, it is not that simple. Odin only accepts tarballs, and many customizations are not available as a tarball. In order to flash most any custom rom, or other install files that require the system be offline, you need to do this from recovery. Custom roms and other apps (like ones that install superuser access, aka “root”) come as zip or img files. Odin will only flash tarball files with filename extensions like md5 or tar, and converting zip files to tarballs is a complicated process. What will come as a tarball, is a custom recovery. Once the recovery is in place via Odin, you can install the rest of your customizations via recovery.
If you don't have the install file on the device, you can “sideload” via USB cable with ADB, with a recovery that supports sideload (modern custom recoveries do). After you have root, you can also manage file transfers from your computer, without having to reboot into recovery or download mode, via a third party app that provides a Samba or FTP server (since google no longer wants you to have access via mass storage device). Yes, you can use MTP, or PTP, but these methods don't give you full access to manipulate the file system, and sometimes just don't want to work. If this all sounds too complicated to you, you can just email the file to yourself and save the attachment, before booting into recovery.
One last detail. There are some apps, like towelroot that will give you root access on your Android device, that don't require the system be offline. However, these apps rely on exploits, and therefore may or may not support your individual phone.
My favorite setup for the Galaxy Note, was a stock Samsung Touchwiz, that I heavily modified myself. Custom roms are someone else's idea of how the android operating system should be. At the moment, I am trying out SlimKat, from SlimROMs. I think they have a philosophy that I appreciate, which is to deconstruct/debloat and focus on speed and stability (which is what I did to my Galaxy Note's Samsung Touchwiz). I hope features they may add, are limited to enrich basic functions you expect in a modern smartphone. I appreciate this, because I want to be the one that adds additional functionality, via third party apps.