I’ve added the column limitations here, since it makes sense. (For the record, you’re correct: 12 note columns, 8 effect columns)
This section of the manual only covers how to interact with the column itself, how the commands work within it, etc. It doesn’t actually mention how to add/remove columns, so I personally don’t think it makes sense to discuss the max column limit here, either.
Seems like a simple typo and/or outdated info. We’ll fix this, too.
No, as far as I can remember, there have always been effect columns in every track type so far. Nevertheless, there may be a track type in the future which cannot have effect columns, therefore the API may eventually return 0 for that particular type.
As usual, it just comes down to good coding practice. You cannot simply assume that all track types will have effect columns. You should always reference the max_effect_columns property to ensure that your code operates within valid ranges.