Create a link list with URLs, categories, entries
Michael,

This is a very common development pattern that we run into. Our primary method of resolving is to create a global set with matrix of links. Using a matrix allows you to extend the matrix item with whatever fields you would need based on the ui, such as an icon class.

Matrix Layout:

Links (link)
│
└─ Link Text (text)
└─ Link Entry (entries, limit 1)
└─ Link URL (text)
└─ Link Target (dropdown, [_self, _blank])


I think that a matrix is a good choice, even considering user experience, because they can be collapsed after setup and it is likely that your user is familiar with them from other areas of the site.

If you don't want to use vanilla Craft you could use the Linkit plugin to add a more robust link field-type. It even lets you set the title, click behavior and works with various types of entries, assets, and custom URLs.

Linkit plugin for Craft https://github.com/fruitstudios/LinkIt

Good luck!