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