jekyll on its own does not have an easy way to make the category pages, so yes, you can create a page for each category, or one page for all categories and loop thru them to get what you want. There is no right or wrong way to do it.
Posts have to be in a _posts folder, you can put a _posts subfolder into a parent folder called
cats and jekyll will consider the parent folder of
cats to be a category for any posts in that folder.
You can have more than one _posts folder, so you could have folders named cats, dogs and birds and each of those could have a sub folder called _posts, and post in that sub folder would have the parent folder as a category.
That said I don’t see any actual documentation for that and I find it a little confusing, I would think there would be one _posts folder with sub folders in it and those would be the categories but I don’ think it works that way.
You can of course just set the category in the posts front matter.
There is a plugin called Jekyll Archives - https://github.com/jekyll/jekyll-archives/blob/master/docs/configuration.md that is fairly popular, it will auto generate category pages for you. I am not sure that will work with GH pages though.