CMS users or website users?
For CMS users could store the combination of user identity and page id in a table then look at extending the tasks pane for https://world.episerver.com/documentation/developer-guides/CMS/user-interface/extending-the-tasks-pane-with-custom-queries/. Which is the easiest way to show this, if you want a widget on the start page that requires creating a custom dojo/dijit widget. For savin the favourite you could just render something in the page preview that's only show to CMS editors using the PageEditing content that can save the page and CMS users id.
For Front end site users same as above but render out to a user the list directly with converted users on the home page.
Personally, I would probably use Entity Framework and store each favorite page's content reference or guid together with username as key.
Edit: You could also use a Profile provider, but I think it feels so outdated and the API is not fun to work with.
https://gregwiechec.com/2016/01/editor-favourite-contents/ might give you some hints :)
I would like to know which programmatic alternatives you have if you want to let users be able to mark a page as a favourite (clicking an icon) and save that and display in a personal link list on a start page. We use windows authentication. Best solution for this?