First, let's comment on
I know sliding is when the Vcm goes faster than the point of contact on the ground.
Actually, sliding is when the point of contact on the ground has any speed (let's call this Vb from "bottom" except 0. The cases are:
a. Vcm=Vb: only sliding
b. Vcm>0, Vb=0: only rolling (let's call this perfect rolling)
c. Vcm>0, Vb<>0, Vb<>Vcm: both sliding and rolling
Gravity applies a force(read:acceleration), to Vcm. It does not apply torque, since it's applied to cm.
Friction applies a torque(read:rotational acceleration). Remember, perfect rolling is when the bottom point is stationary. So, if you take the rotational acceleration due to friction and apply it to the bottom point, if this is equal and not less than the linear acceleration of gravity (it can't be more because friction "auto-throttles"), then the cylinder will perfectly spin. Else, it will partly spin, partly slide. It can only "not spin at all" if friction is zero.
Now, static friction is known to be just a little higher that kinetic one. This means that it is possible to find a surface such that if you put a still cylinder on it it will do a perfect spin, while if you put the same cylinder and boost it a bit to start slide, then it will keep sliding (the lower, kinetic value of the friction will never provide enough torque to stop the sliding and convert it into rolling).
About the accelerations:

The blue linear acceleration vectors are the result of gravity's force, the red of friction's torque. Contrary to what you say on your comment, what happens on the perpendicular axis is not uniform.
If the red arrow can be as large as the blue one on the bottom point, then it(the bottom point) shall stay still and always have 0 velocity. The other points of the object will receive the "right" combination of accelerations so what you see is perfect spin. Else, the red arrows will be somewhat smaller and what you will see is the partial spin, partial rolling.
About the frictional force:
It tries to counteract the gravity force mg on bottom point (which is the same as the gravity force of CM). Its value is based on the following logic, where Fk=kinetic friction which is a bit less than Fs=static friction:
- Is mgcosθ <= Fk? Then Friction = mgcosθ and cylinder spins perfectly
- Is Fk < mgcosθ <= Fs AND cylinder is NOT currently sliding? Then the higher value of Fs can be used: Friction = mgcosθ and cylinder spins perfectly
- Else (either mg>Fs or FK < mgcosθ <= Fs but cylinder already sliding) the friction is not enough and there will also be sliding.