I understand basic HTML, usually you have to put HMTL files on a webserver, then you can simply request them by pointing to them as I'm sure you are well aware.
I'm well aware of what happens when you click a hyperlink. It is you that is making assumptions, incorrectly, about the "magic" that happens.
You don't request a page by simply pointing to it. The browser has no idea what you are pointing to. You have to actually click the text rendered as a hyperlink. When you do that, a lot of things happen, some on the client end and some on the server end. In order to server the correct page, the server must actually parse the GET request. You aren't even printing what the client is asking for. How you can then presume to supply a response is really beyond me.
However I'm not sure how this would work from an arduino.
Then, you do NOT understand what the browser is doing, or what the Arduino is being asked to do. Learning what the Arduino is being asked to do is easy. Once you know that, you should be able to serve different pages, and predict what the request will be when the user interacts with the page you do serve. Once you can do that, then serving the correct page in response to the GET request is trivial.
Also how do I define the page titles?
What do you mean by "the page titles"? There is a html tag, title, but I don't think that is what you are asking about.