Если вы хотите сохранить количество видимых пузырьков до 10, но добавьте еще одну строку, ширина пузырьков должна зависеть от размера ячейки сетки, в которой они расположены. Тогда вы полностью полагаетесь на отзывчивость сетки .
Если вы хотите уменьшить эффективное количество видимых пузырьков, вы можете добавить параметр условного рендеринга, чтобы уменьшить количество пузырьков, присутствующих на меньших экранах:
<div class="ten-bubbles col-sm-3 col-xs-6" style="cursor: pointer; height: 70px;" *ngFor="let prof of analytics;let i=index"
(click)="selectedQstn = i">
<div ng-if="i <= 7; else hideOnSmallScreen">
<span class="qs">Q{{i + 1}} <a href="#question-view"></a></span>
</div>
<!-- hide the last 3 elements on medium screens-->
<ng-template #hideOnSmallScreen>
<span class="qs d-md-none">Q{{i + 1}} <a href="#question-view"></a></span>
</ng-template>
</div>