I've done quite a bit of experimentation with labels, as I have a large number of them (one for each playing partner), and I have had a number of things go wrong whenever I tried to change them (just like everone else). But I'm one of these people who likes poke at things and see how they work. Each system has an internal logic of its own, even if the logic is totally screwed. And I have found out a few simple things about the labeling system here, that allow me to work with it relatively trouble free. They may not all be correct, but they seem to work for me, from my hit or miss experimentation.
1. Don't ever delete a label.
unless it is the last label on the list (and not even then without deleting or relabeling the contents first)
. Deleting the label shifts all the labels after it up one box, but does not shift their contents. Therefore the contents of every label below the one deleted are subsequently wrong (off by one box on the list for every label deleted).
2. Instead of deleting labels, I reuse them. First I clear out the contents of the label, either by deleting the message threads or relabeling them (see 4c. below). And then I simply edit the label title to what I want the new one to be, making it available for the new contents. If I want to shorten my label list, I do the same thing, only move the contents of the last label into the one I no longer want, and relabel it, then delete the last label.
3. Automatically moving PMs by using rules (in my experience, at least), is so fraught with perils that it may not be worth the trouble at all, especially as it is really easy to move either messages or whole message threads from the inbox to a label (which is what I do with all PM threads other that the most recent thread for each person). That way, my inbox stays at about one page, and I can find things quickly.
[I look at (and move) PMs by threads, but what I say below applies equally to individual PMs; it just requires a lot more moving. And when I say move here, I really mean change labels.]
4. Moving PM threads (or individual PMs) from the inbox to a label is either a one-step or a two step process.
4a. If your preferences are set to remove the inbox label when you move posts to a label, then it's a single step. You simply check the boxes on the threads (PMs) you want moved to a label, and then select the label they are to go to from the drop down list at the bottom right of the inbox. Simply selecting the new label moves them after a few seconds.
4b. If your preferences are set so as not to remove the inbox label when you move threads or posts, then you end up with two copies of the PMs you move, one in the inbox and one in the label. This causes strange behavior when you try to delete PMs or PM threads, as they are listed in two places but physically in one, and generally get deleted from both lists (which, to me, was unexpected).
4c. If you have PMs in both the inbox and a label, the way to get rid of them in one place but not the other other is to unlabel them (which you will find as an option as the very bottom of the labeling dropdown menu on the bottom right).
5. Thus moving PMs from one label to another (or from the inbox when you don't have it set to automatically remove the inbox label) is a two-step process. The first step is to add the new label as in 4. above. After that step, you will see that your PMs are still in the label or inbox where they were, still checked. Going back to the same drop down menu you used to add a label, you go to the bottom and clich the label of the original location that is listed under delete. Then they disappear from the original location.
[My impression, BTW, is that deleting labels does not delete their contents, but rather perhaps orphans them (which could perhaps explain the seemingly phantom new message counts). I have no evidence for that, though.]
I'm sure this won't take care of every labeling problem, but it has solved mine for me. And if it can help anyone else, then I'll be delighted.
If not, feel free to ignore this.
Edit: corrected some typos and fuzzy wording
Edited again to strike out something that apparently didn't work.