Short answer - Cloud Services is the old stuff. Virtual Machines is the new stuff. Never use cloud services for new projects. I wouldn't event include it in the article
Sure it's old, but Cloud Services and VMs are two different things and there's only a little overlap (in the sense that VMs creates availability groups and can load balance endpoints). Cloud Services offers machine provisioning via a packaged file that contains the code to run, configuration and other important bits.
Any reason you recommend it to not be used for new projects? (yes, I understand it's ASM and not ARM and shows up as "classic" in the new portal, but you can still get quite a lot out of it that you can't easily get with VMs or App Services).
The reason I don't recommend it is that it clearly has not future. It is not deprecated or killed, but it is kind of frozen. Will continue to be supported but no new investment there. it missed the train, and this train is going places, so you really want to be on it.
Yes, Cloud Services and VMs are two different things, however, Azure's IaaS was built on top of this concept up until when they migrated to ARM and VMs.
The way it used to be, was that Cloud Services was Microsoft's PaaS, and when they introduced IaaS (Yes Azure had PaaS first), they built it on top of cloud services. So essentially IaaS built on top of PaaS. Most people would expect it to work the other way around, and so that's exactly what they did with the new stuff - They invested heavily in re-doing the entire IaaS stack, and then built PaaS components on top of it.
Regarding ARM, VMs, the new stuff- We call it 'new' to differentiate from the 'classic' stuff, but it shouldn't be considered as such. It is old enough, stable enough and it the recommended way to do stuff on Azure.
If you are doing just IaaS - there's no question there. Use the ARM model.
Cloud Services did have nice features mostly for programming model, and code deploy, but there are ways to do that with ARM as well.
There is not a single direct replacement to Cloud Services, and it makes the transition harder. this is because the new model has different architecture and layering of the stack.
If you are looking for these features, I recommend looking at a PaaS framework in the new stack like Service Fabric.
They really want people to transition cloud services apps to Service Fabric. It's quite good and has the same feel, with more flexibility in what your "roles" actually execute. Oh, and Service Fabric runs on Linux too.