Ja bym to rozwiązał w ten sposób: https://jsfiddle.net/Czeran/86wbdqpm/
Małe wytłumaczenie:
Domyślnie w jednym elemencie z klasą "row", mieści się 12 kolumn. Dodanie 3 elementów "col-md-4" w jednym "row" rozciąga te 3 kolumny na maksymalną szerokość elementu "row". Każde dodanie marginesów do elementu "col-md-4" powoduje przekroczenie maksymalnej szerokości i ostatni element ląduje linijkę niżej. Dodanie borderów nie powoduje przejścia ostatniego elementu niżej, ponieważ border wyświetlany jest "w środku" elementu - czyli nie powiększa szerokości samego elementu. Rozwiązanie fajne, aczkolwiek gdy masz nietypowe tło (inne niż jednolite), twoje odstępy nie będą wyglądały najlepiej. Moje rozwiązanie polega na dodanie wewnętrznego kontenera i dodania mu marginesu tak żeby utworzyła się przerwa w miejscu w którym nam się podoba, a elementowi "col-md-4" zerujemy padding oraz margin i ustawiamy tło na przezroczyste. Dodatkowo dodałem opcję "@media" by usunąć te marginesy, gdy strona zacznie się "składać". Dla kolumn "sm" jest to wartość 750px. Dla innych kolumn szerokość ekranu, w których elementy zaczynają przechodzić na dół możesz znaleźć na oficjalnej stronie bootstrapa (http://getbootstrap.com/css/#grid-options).
Mam nadzieję że pomogę ;)