onReapplyDuplicateType refers to what happens when a buff is applied to a target a second time. Say the buff has a stacking limit of 1, and it has a finish condition of time elapsed; in this case using PrioritizeNewBuffs would be good as the "new" buff, which has a "new" timer, would be better to apply to the target. However, when dealing with say a passive ability that only has out of range as a finish condition, using PrioritizeOldBuffs would be better as this uses up less CPU resources and as reapplying the buff ultimately serves no purpose.
buffStackingLimitType refers to the "owner" of the original caster. For example, with a stacking limit of one and a buffStackingLimitType of ForAllPlayers, a phase gate buff will only work for a single player, if there are multiple phase gates in a gravity well. However, with a buffStackingLimitType of PerPlayer means that each player has a stacking limit of 1, i.e. everyone can have a phase gate buff on that gravity well.
From what I can tell buffExclusivityForAIType goes hand in hand with buffStackingLimitType, namely if you have a buffStackingLimitType of PerPlayer buffExclusivityForAIType of ExclusivePerPlayer. However, for buffs that applies to all players rather than being focused on per player, it seems that ExclusiveForAllPlayers and NotExclusive effectively do the same thing, confusingly.