I wonder what do they mean (Emacs 26.1) ?
* means the buffer has been modified, and
% means it is read-only.
(Comments here corrected my initial misstatement that
* means the buffer is marked for subsequent action. The character used for that is
>, not `*.)
Comments here also mention, as a reminder, that the same characters
% are used in the mode-line to indicate that a buffer has been modified and is read-only, respectively.)
h (or as always,
C-h m) in Ibuffer shows help on the major mode. But I see that it does not provide any legend for understanding such markings. Please consider filing a bug/enhancement report: