This one can be confusing.
Here's how it works with a single file selected:
Original -> New Value -> How sorted with "Show Changes First"
Tag is correct:
Black -> Black -> Later
Tag will be added:
[missing] -> Green -> First
Tag will be changed:
Yellow -> Yellow -> First
Tag will be removed:
Red -> [missing] -> First
These results are all fine. It's when you start selecting multiple files that things fall apart. I can't make a full list of every possible permutation, but here are some examples of bad behavior:
If two files have the different "Original values" and different "New values", Picard indicates no change – i.e. it shows "(different across 2 items)" in both columns in black and does not place the tag at the top of the list.
If the "New Value" for two files is the same, one file is already correct and the other will have the value added, picard lists "(missing from 1 item)" in the "Original Value" column, but otherwise indicates no change. But if the second file has a value that will be changed, the "Original Value" column indicates "(different across 2 items)", the text is yellow and it's listed first (this latter behavior is OK).
If one file is having a tag added and another is having that same tag removed, both columns show "(missing from 1 item)", but otherwise indicate no change.
If one file is correct, and a second file is having a tag changed, if the "New Value" of the tag is the same as the first file, the change is correctly indicated. But if the "New Value" is different than the first file, no change is indicated.
You get the idea... The main variables are:
For each file in the selection: Are tags being added, changed, or removed, or are they correct, or are they correctly absent?
For all files in the selection: Are the original or new values the same or different?
Also worth noting: selecting a track that doesn't have a file associated with it still affects what's displayed in the "New Value" column.