All right, this should do it.
for (i = 0; i < particleCount; i++)
{
pos = particles[i].position - particleGroupCenter;
vel.x = - particleGroupAngularVelocity * pos.y;
vel.y = particleGroupAngularVelocity * pos.x;
particles[i].velocity = vel + particleGroupLinearVelocity;
}
This will preserve the linear velocity of the group. The individual particles will be given velocities as if they were all embedded in the same sheet of glass, rotating about the group center. (Keeping them in those orbits is someone else's problem.)