Now what I understand from the above is that you replace all | with , and then search the string for the current year, and return either a number or NULL?
It changes the multiselect separator to a separator the find in set function understands (a comma). It then searches in the set that the year exists. If it does it returns its index (could be 1-infinite). If it doesn't find it in the set it returns 0 (in some cases NULL).
And that seems to give me the correct result, is that the correct thing to do, or is there a better way?
Yup, that should work perfectly fine.