A scale set (VMSS) is an implicit availability set. The difference to an availability set is that a scale set has a central definition (the "model") which defines VM characteristics. This means that all the VMs are created from the same OS disk and configuration, and it is easy to change the number of VMs in the set by changing the "capacity" property. Changing the capacity results in VMs being deleted or created while maintaining high availability (an even spread across fault domains, i.e. physically separate racks in the DC).
VMSS is the only way to do autoscaling in Azure Resource Manager. In the older Cloud Services deployment model, autoscale involved starting/stopping VMs in an Availability Set. In Azure Resource Manager autoscale involves adding/removing VMs to a scale set.
You can create a scale set with a capacity of 0, or up to 1000. If you are using autoscale, you can configure a max, min and default number in the autoscale settings.
In Azure Resource Manager, you'd typically create an availability set if you have a need for your VMs to have their own specific names (rather than a name prefix and a number, which scale set VMs have), or you need VMs to be configured differently by design rather than temporarily (e.g. when rolling out a configuration change across the set).
You'd create a scale set if you want to do autoscale, or if it makes more sense for your app for the VMs to be centrally configured, or if you want to do operations against a set of VMs. E.g. starting 100 VMs is a single command if they are part of a scale set.