Вообще, я не помню случая в своей практике, чтобы использование !important было единственным возможным решением, всегда находятся более правильные. Единственное, это userstyles, когда нужно на чужом сайте поменять стили, но в разработке это не используется.
Что касается bootstrap, то давайте взглянем на код из его исходников
.visible{
visibility:visible!important
}
.invisible{
visibility:hidden!important
}
тут используется important по той простой причине, что используя в своем элементе класс invisible, мы хотим гарантировать, что элемент будет невидимым. Предположим, что там нет important, и возьмем такой пример
<div class="vova-block invisible">Тут текст, его надо спрятать, поэтому я добавил в класс invisible</div>
.vova-block {
visibility: visible;
}
при условии, что мой css файл подключается ниже, чем bootstrap, или что еще вероятнее, имеет выше приоритет
div.vova-block {
visibility: visible;
}
добавленный класс invisible не дает никакого эффекта, блок будет видимым. Поэтому bootstrap и добавили в своих таких селекторах important, чтобы я случайно его не переопределил. Но это порождает куча important'ов в тех случаях, когда я хочу неслучайно переопределить - но это плохо.
Всегда можно найти способ не использовать important. Лучше скопировать код с селектора boostrap, модифицировать его под себя, чем городить important.