Thank you all for pointing out the issues!
As for the formulas: Variance of a sample has different scaling factor, hence the difference. Use the second CentralMoment instead:
In[175]:= data = {1, 2, 3};
In[176]:= wd = WeightedData[data, {w1, w2, w3}];
In[177]:= Variance[data]
Out[177]= 1
In[180]:= Variance[wd]
Out[180]= (w1 w2 + 4 w1 w3 + w2 w3)/(w1 + w2 + w3)^2
In[178]:= Variance[wd] /. {w1 -> 1, w2 -> 1, w3 -> 1}
Out[178]= 2/3
In[179]:= Variance[data] (Length[data] - 1)/Length[data]
Out[179]= 2/3
In[181]:= CentralMoment[data, 2]
Out[181]= 2/3
In[183]:= CentralMoment[wd, 2] == Variance[wd]
Out[183]= True