Родился в дворянской семье, православный. Военное образование получил во 2-й Сибирской военной гимназии.
На службе в русской армии с 1872 года.
В звании поручика участвовал в Русско-турецкой войне 1877—1878 годов.
В 1882 году окончил Михайловскую артиллерийскую академию, с 1890 года на командных должностях в артиллерийских соединениях.
В 1903 году присвоено звание генерал-майор, занимал должность начальника артиллерии 14-го армейского корпуса.
С 1911 года командир 25-й пехотной дивизии.
С началом Первой мировой войны, в августе 1914 года, 25-я пехотная дивизия под командованием Булгакова принимала участие в Восточно-Прусской операции против германских войск. Принимал участие в битве при Сталлупенене и Гумбиннене.
В декабре 1914 года был произведен в генералы-от-артиллерии и назначен командующим 20-м армейским корпусом.
В ходе Августовской операции в феврале 1915 года, при отступлении из Восточной Пруссии, корпус Булгакова попал в окружение германских войск. После ожесточенных боев и многочисленных попыток прорвать окружение 22 февраля 1915 года генерал Булгаков вместе со штабом корпуса сдался в плен. Награждён орденом Белого Орла с мечами, за героические попытки выйти из окружения. 12 марта 1915 снят с должности из-за нахождения в плену.
В плену содержался в лагере Бург в Германии. 3 августа 1918 г. вернулся из плена в качестве инвалида с военно-санитарным поездом № 44. 8 августа 1918 г. помещен в 217-й сводный эвакуационный госпиталь в Мценске. 6 сентября 1918 г. выехал в город Бельцы.После Гражданской войны проживал в Бессарабии.
В 1940 г. во время Присоединения Бессарабии к СССР был арестован. Умер в тюрьме вскоре после ареста.