OK, first thing as Howard mentioned, 100 users? seriously? But because from your first post you are gathering this information for your diploma, so why not.
A general guideline (some still may disagree) is 20 users per 1GB of RAM(memory), so based on this one can always setup hardware accordingly, this doesn't means you will only be allocating the required amount of RAM to achieve the desired performance, but then others components will have to be upgraded accordingly. I will reply as you asked questions and assume that most of will be answered in this post.
You mentioned Horizontal and Vertical scaling, well not just moodle, ANY web application can be scaled in both terms, where vertical scaling (or scaling UP) is concerned you add/upgrade hardware on one box/server, for example you can add more RAM (Memory), create RAID on Hard Drives or even upgrade traditional hard drives to SSD drives that not only increase performance but as well as decrease chance of failure (no mechanical parts), either upgrade CPU or add additional if your box comes with dual/Quad socket configuration. Vertical scaling will definitely provide performance uplift where you can serve more users out of one server/box, as well provide redundancy in some areas - like a server grade hardware comes with redundant Power supply and disc drives, but when it comes to other failures like one stick of RAM going bad (though RAM and CPU's are build to last), this will render your server from AVAILABLE to NOT AVAILABLE. This is when HORIZONTAL (or scaling OUT) expansion steps in, where you add more servers/machines to your server network to share workload, this will make your system fault tolerant and highly available, as even one server fails other servers on network will step in/continue to serve.
Now when mentioning vertical scaling, it is recommended (I cannot recall but I did read on moodle's site, whether documentation or discussion), to set up different components of moodle separately. when I say moodle components/parts, moodle installation is made up of three things, moodle script files together with web server (that you download from moodle site), moodledata (created while installation, where all files/media is stored) and database. Now when I say separately, means putting all three on different drives, so essentially you'll be setting up multiple RAID configurations for performance and redundancy. Which RAID configuration you require depends on if you're setting up for Data Redundancy, performance or both - but remember each configuration comes with its price. If I keep in mind the modern hardware (3 year old or newer) one box can easily serve 10,000 concurrent users if not more.
When it comes to high availability, you'll be setting up web farm/cluster (horizontal scaling), do not expect a horizontal scaling would speed up your moodle, but surely can accommodate X more numbers of users, depending upon how many servers you're adding to your network. Now keep in mind, redundancy/high availability doesn't only comes with server scaling, but you have to consider other parts of whole setup as well, like additional power source, additional internet source etc. But i'll limit my post to server scaling only as network and power goes beyond the scope of this topic.
Before mentioning how to on windows server platform (as this is what you asked for), I'll quickly mention database, it is achieved by MASTER-SLAVE replication, just to give you example, Open University UK are running a web-farm of 10 web servers with 2 database servers on MASTER-SLAVE. Now which database you want to use is dependent upon your skills, as MOST of moodle installations are on MariaDB/MySQL, but when your database gets huge, PostGreSQL or Microsoft's SQL Server are known to work more efficiently. If you want to know more about database replication or fail over clustering, Ken Task would be ideal person to ask to as he has more Database expertise than I have.
Now coming to setting up webfarm/cluster on windows based systems, there are THREE ways:
1: Using hardware based Load balancer: It's additional hardware that you setup BEFORE servers, and comes with cost of hardware and cost of setting it up, and as name suggests balances the load of traffic across your web servers, and how it manages load again depends upon configuration. This hardware can be used with Both Windows and Linux machines.
2: Using NLB (Network Load Balancer): This comes as a part of Windows Server family, making it a free choice. in a simple farm configuration, this is easy to setup and will provide a fail over so in case one server fails users will automatically be switched to working server, although NLB allocates users based on which server it gets to fastest, but this does not automatically provides a balanced user allocation to different servers, so essentially your own server will be hitting the maximum while others remain free. One drawback is on SSL configured sites where end-end encryption is happening, if the server fails and users are switched to other, because SSL certificates are installed on individual machines, by switching users will have to re-login. One can setup NLB by installing NLB and NLB manager from server components, an additional IP will be required that will work as a farm/cluster IP, and your DNS records will be pointing to that cluster IP and not machines, so users will be served by cluster IP and it will allocate users to different servers in your network. maximum numbers of servers one can add to NLB cluster is 32 (that is true up to Windows Server 2012 R2, unsure about later versions they may have more).
3: Using ARR (Application Request Routing): Where NLB has limitations, that you cannot monitor performance of your cluster, allocate client assignments, setup cluster cache's etc (these are found in hardware load balancer), Microsoft has another piece of software that can do all that a hardware load balancer does, but good thing it comes free as well. It's not part of server O/S, but is installed seperately with some dependencies that gets installed automatically as when you setup ARR using Web Platform Installer (a script installer for Windows servers), in ARR you can allocate users based on many different scenarios for example most popular configuration is round robin, where users are assigned to each server as when their requests comes in, so user 1 will be sent to server 1, user 2 will be sent to server 2 and so on..or as well you can set up user assignment by sending ODD numbers to one machine or even numbers to other or simple sending users to machines dependent on load factor.
Now coming to last point, that being content replication, of course when setting up a server farm, you'll be replicating content (files added to course, or files uploaded by users etc) across all machines, one way to do this is by setting up a separate file server, that all others web servers on cluster will be fetching from and writing to, This file server can be replicated on its own, but considering when it comes to content type (like you may have videos) one single source (one wire from network switch) serving multiple web servers will become bottle neck, even with upgraded network interface there will be penalty of latency. Windows server comes with DFS-R (Distributed File System - Replication), again a built in component, all you need is activating it. folders like moodle and moodledata will be replicated across all web servers, so when content is added/updated on one, it will reflect across all.
Lastly, you'll be concentrating on vertical expansion in priority to serve more users and performance tuning, as managing multiple servers isn't as easy as managing one box, I have mentioned above already how you'll be expanding server vertically, and its not just hardware, but software tuning required as well to get the maximum out of one box solution, where Apache server on Linux or IIS on Windows have different performance tuning options one can make use of OpCache (recommended by moodle), MemCache etc to soft tune the moodle installation (works on both windows and linux) when the limit of your hardware reaches to its maximum, then you can always think of horizontal expansion.
I hope I have answered most of your question if not all, still if you need more information ask for it, there are people with core expertise on this forum that will assist you in particular interests.
P.S: Do not copy paste this on your diploma paper, or you'll get F grade 😛