Pretty sure it is a conflict.
Do you have any error before safing or after loading a safegame ?
Does it happen right after a new colony too (dev. mode on, then you can start with the top right icon a quick test colony).
I tried a new colony through dev mode like you said, gave a class to one of the pawns and leveled it up, reloaded and all points invested were gone. I checked the log and there are yellow errors, mostly regarding Medieval Times apparel. Though there were these 3 red errors
Edit: I just noticed that this only happens to magic classes like the priest or warlock, the gladiator saves and loads just fine
Could not resolve cross refs: System.NullReferenceException: Object reference not set to an instance of an object
at Verse.Thing.ExposeData () [0x00000] in <filename unknown>:0
at Verse.ThingWithComps.ExposeData () [0x00000] in <filename unknown>:0
at Verse.CrossRefHandler.ResolveAllCrossReferences () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.CrossRefHandler:ResolveAllCrossReferences()
Verse.ScribeLoader:FinalizeLoading()
Verse.Game:LoadGame()
Verse.SavedGameLoaderNow:LoadGameFromSaveFileNow_Patch1(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()
Could not resolve cross refs: System.NullReferenceException: Object reference not set to an instance of an object
at Verse.Thing.ExposeData () [0x00000] in <filename unknown>:0
at Verse.ThingWithComps.ExposeData () [0x00000] in <filename unknown>:0
at RimWorld.Apparel.ExposeData () [0x00000] in <filename unknown>:0
at Verse.CrossRefHandler.ResolveAllCrossReferences () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.CrossRefHandler:ResolveAllCrossReferences()
Verse.ScribeLoader:FinalizeLoading()
Verse.Game:LoadGame()
Verse.SavedGameLoaderNow:LoadGameFromSaveFileNow_Patch1(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()
Exception spawning loaded thing null: System.NullReferenceException: Object reference not set to an instance of an object
at Verse.Map.FinalizeLoading () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.Map:FinalizeLoading()
Verse.Game:LoadGame()
Verse.SavedGameLoaderNow:LoadGameFromSaveFileNow_Patch1(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()