This problem with colors remains as long as we value matchmaking and casual ladders equally. To be in the top 1% of MM you have to be in the top 2, for casual in the top 14. Thus the majority of players are going to get their purple badge in casual. If we wanted the MM ladder to be as smooth as the casual we'd have to give it easier percentiles.
Well you have basically two purposes to ratings and badge colors:
1. To be able to tell how strong a player is when you end up in a game against them or on their team.
2. Bragging rights.
Honestly I don't think it should be "MM vs Casual" but rather "MM vs All". In other words, MM games count towards "All" but not the other way around. That way you have at least one rating that's as accurate as possible across all games played on featured maps and modes (maybe even supported, as long as that doesn't include crap like speed metal), while MM is all about bragging rights. In that case bragging rights would need its own badge thingy, or as an extra decoration to the normal badge so that it doesn't take up more space in the user list.
You could also use somewhat different scaling for MM, like purple: top 10, blue: top 50, and maybe the other colors could be the same using percentiles.
Rank or rating decay during inactivity is something I explicitly avoided, as it would add the dreaded rating change without playing right back in. Instead I'd rather just remove inactive players from the ladders.
Well no argument there, as long as it's consistent.
I still think the problem with ratings changing even if you don't play is just that your rating changes from one mostly-meaningless number to another. Even when you look at the graph on the ratings page it's scaled to your own ratings changes so you can only compare to yourself. If the scale were fixed at 0-1000, with lines showing each badge color threshhold, it'd be a lot clearer wrt what you're looking at and what it means. As it is you can't just go "oh my rating changed because the community is getting stronger/weaker", it's just "oh my ratings changed and wtf does that even mean?".
Using a percentile-based rating the offline changes also ought to be smaller in general, and thus less alarming. It would feel a lot more like "oh it's just making small corrections" rather than "wtf why did I drop 100 points?".
As for that 3 digit rating you're suggesting. The percentiles are already calculated, so we could just display them instead of Elo numbers.
You'd still have to make a small change to ensure that the top player (and only the top player) gets a rating of 1000, and vice versa for the worst player and 0. Either way it doesn't sound like it'd be a lot of work.
How do inactive players count wrt the percentile calculation though? IMO if you get dropped from the ladder you shouldn't be counted except maybe for the non-visible WHR rating.