I will answer your question based on your example; before doing so, it has to be noted that by default a div
element has a width of 100% or in case of the bootstrap classes, is equal to all col-XX-12
classes, each one at its responsive tier.
When using the col-sm-6
on its own and based on the the way the bootstrap grid system works, here is what happens:
a) Since there is no col-xs-XX
class, the width of the column will default to a normal div
's, aka 100%
b) Starting from the sm
resolution tier - 768px and above - the column would be 6/12 or 50% of the parent width.
c) If there are no other classes for higher resolution tiers, then the 50% width will pass on to all resolutions upwards.
To answer your question, why you should need the rest of the classes used for higher resolution tiers, eg 'col-md-6' or 'col-lg-6'.. you don't, UNLESS of course you want to change the column width to a different width at those resolution tiers.
Moreover, you can also skip classes of intermediate resolution tiers, if the column width remains the same for those resolutions, eg. if you require a column to have a 50% width from 768px and up to 1199px and then have the column consume 66% you would use classes col-sm-6 col-lg-9
skipping the intermediate col-md-6
since the value is carried on from the small resolution tier.
As a sidenote, the breakpoints I am referring to are from Bootstrap 3 - are changed for Bootstrap 4 - however, usage remains the same.