I have a total of 25 (base 0) columns, includes standard ones. I was from the Lean-mean database schoo era.l
I also use the
Count pages plugin: but only use #Pages and #grade-level columns (gives an idea on how long and how light).
I have a #master-format column to track how the book
arrived. (many of us convert for other devices). This is a fixed value type.
The next columns track my touch-up/tweak 1)Validated (I use Calibre editors one), 2) Date last edited (fixed the faults, cleaned the code and made it 'my way')
I have a #Subtitle column (Kobo supports these). I have to hand split-off these as there is no surefire title parse)
My Done-Reading is a Date: (blank)=not read, a date=done except if it is 2000=abandoned
IMHO Infer status rather when you can, rather than have values. (Enable Tri-State logic in Preferences:Behavior). Not read/done: simply look for a blank spot in the list.
The next 2 handle collections
I have a #split_series column (I only do 1 alternate or it becomes <various> for the second)
#alt_authors. This started out for books written under a pen-name (I put the real name here and have searches also look here), but then I ran into ridiculously long filenames when I used {authors}, so I move all the Authors (if over 3) here and put the
Editors-name (ed) into {Authors}
Speaking of roles I
do not use additional columns for these. Calibre mostly ignores the
(role-value) part of an author entry when sorting, so I simply flag their non-author role: (ed), (trans), (Illus), (Creator)
I also have a #usertags. (I leave the standard {tags} as normally used by publishers). This is where I leave myself notes (not all for general consumption)

I do wish Calibre would not embed these INTO the book.