Answer
DefColVisibility is genuinely the DEFAULT column visibility — the visibility state a column has the very first time that window is loaded, fixed at design time (0 = hidden, 1 = displayed) — and it never changes at runtime regardless of what a user does afterward. ColVisibility, by contrast, reflects the CURRENT/runtime visibility state, and is what actually changes when a user manually hides or shows an already-visible or already-hidden column during a session; that change only gets saved into the profile once every instance of that window has been closed. So setting DefColVisibility directly has no visible effect on an already-open or already-used window — it only affects what a brand-new session sees the very first time that window loads with no prior ColVisibility override saved.