They all have a similar meaning - but I use slim for someone who is normal weight and thin for someone who might weigh slightly under average. Skinny would be the same as slim or thin but could be said as a soft criticism and scrawny as a harsher criticism of someone's thinness - but not cruel or unkind.
Slim-thin-skinny-scrawny.