They rotate around their center, but in my shader they rotate around the emitter, I must have set the rotation to the wrong place.
I have placed it at the "same" moment, after the V*P multiplication 
In the sample, corners are done this way:
for (int i = 0; i < settings.MaxParticles; i++)
{
particles[i * 4 + 0].Corner = new Short2(-1, -1);
particles[i * 4 + 1].Corner = new Short2(1, -1);
particles[i * 4 + 2].Corner = new Short2(1, 1);
particles[i * 4 + 3].Corner = new Short2(-1, 1);
}
Whereas mine, as I'm using instancing, are done one time at the definition vertexbuffer:
vertices[0].Position = new Vector3(-halfWidth, -halfHeight, 0);
vertices[1].Position = new Vector3(halfWidth, -halfHeight, 0);
vertices[2].Position = new Vector3(-halfWidth, halfHeight, 0);
vertices[3].Position = new Vector3(halfWidth, halfHeight, 0);
But I dont think scaling changes the center of the rotation.
I then align to the camera (which in the sampler is done ... where) ?
temp_pos3D = pos3D.xyz;
temp_pos3D += (offset.x * Size.x * Side + offset.y * Size.y * Up); //side is the camera's Right Vector3, Up is the camera's Up Vector3
and then the V*P comes... and the rotation
Maybe it is here my problem lies...
ex: