Возможно вам просто стоит учесть то, что когда вы пишите col-sm-push-3, то ваша колонка сдвинется на три колонки вправо начиная С первого брейкопинта (по-умолчанию в бутстрапе sm - это 768px) и ДО бесконечности. Если вы меняете ширину колонок на каждом брейкпоинте, то и классы "pull" и "push" вам нужно указывать для каждого брейкпоинта.
---
Если вы загляните в код, то бутстрап перемещает колонки между собой с помощью position: relative. А именно, когда вы пишете push-2, то колонка сдвигается относительно своего положения на две колонки вправо. pull-2 же свдигает на две колонки влево. Колонки находящиеся в разных рядах отсортированы стандартными средствами BS быть не могут.