Родился 2 (15) февраля 1908 года в деревне Ивановское ныне Кимовского района Тульской области. Сын рабочего-железнодорожника. Член ВКП(б)/КПСС с 1927 года. Окончил школу ФЗУ при Киевском паровозоремонтном заводе, в 1937 году - Военно-политическую академию имени Н. Г. Толмачёва.
Работал слесарем, секретарём партбюро на заводах Киева и Ленинграда. В Военно-Морском Флоте с августа 1932 года, был направлен по партийному набору на усиление флота и направлен на учёбу в академию. С июля 1937г. — военком подводных лодок «Щ-318» и с ноября 1937г. — «С-1» Балтийского флота, с августа 1938г. — военком линкора «Марат» на Балтике. С июня 1939г. — член Военного Совета Северного флота, участник советско-финской войны (1939—1940). С апреля 1940 года — член Военного Совета Черноморского флота. Участник Великой Отечественной войны с июня 1941 года. Участник героической обороны Одессы и Севастополя, битвы за Кавказ. Руководил деятельностью политических органов и партийных организаций Черноморского флота в боевой обстановке. Переаттестован из дивизионных комиссаров в контр-адмиралы (13.12.1942г.). В январе 1944 года отстранён от должности за неудовлетворительную работу Военного Совета флота, следствием чего стали гибель отряда боевых кораблей флота в ноябре 1943 года и тяжёлые потери в ходе Керченско-Эльтигенской десантной операции в Крыму. Три месяца находился в распоряжении Политуправления РККФ СССР. Был разжалован в капитаны 1-го ранга (2.03.1944г.). С марта 1944г. — начальник Высших военно-политических курсов ВМФ. Благодаря помощи Главнокомандующего ВМФ Н. Г. Кузнецова был восстановлен в воинском звании «контр-адмирал» (21.07.1944г.), и в июне 1944 года назначен начальником Управления пропаганды и агитации Главного политического управления РККФ СССР, а в декабре 1944 года стал начальником Главного политического управления РККФ СССР — вторым человеком в советском ВМФ. За эту помощь и поддержку Н. М. Кулаков вскоре ответил Н. Г. Кузнецову чёрной неблагодарностью. С марта 1945г. — член Военного Совета Северного флота. С июня 1946г. — член Военного совета — заместитель Главнокомандующего ВМФ СССР по политической части. Вице-адмирал (24.05.1945г.). В декабре 1949 года он второй раз будет снят с высокой должности и второй раз понижен в воинском звании до контр-адмирала «за неудовлетворительное руководство партийно-политической работой в 8-м ВМФ». С января 1950 года его направили на учёбу в Высшую военную академию имени К. Е. Ворошилова, но уже в апреле этого года отозвали из академии и вторично назначили членом Военного совета Черноморского флота (впервые он занял этот пост 10 лет назад). Вскоре вторично стал вице-адмиралом. Он и не мог тогда предположить, что являясь судьёй и обвинителем по «адмиральскому делу» 1948 года, может оказаться через несколько лет в положении подсудимого. Но в отличие от Н. Г. Кузнецова, в 1955 году, после гибели линкора «Новороссийск», его было за что судить, так как в заключении правительственной комиссии утверждалось: «Прямую ответственность за катастрофу с линейным кораблём „Новороссийск“, и особенно за гибель людей, несёт также и член Военного Совета Черноморского флота вице-адмирал Кулаков …». Но Н. М. Кулаков оказался непотопляемым. За гибель линкора «Новороссийск» тоже безвинно ответил Н. Г. Кузнецов. Кулаков Н. М. «отделался лёгким испугом» и под суд не попал, только уже в третий раз за свою службу был понижен в воинском звании — он стал контр-адмиралом 8 декабря 1955 года. После полугодового пребывания в распоряжении Главнокомандующего ВМФ СССР в мае 1956 года он назначен начальником политического отдела и заместитель по политической части командующего Кронштадтской военно-морской крепостью. С апреля 1960г. — командующий Ленинградским военно-морским районом. С июля 1961г. — начальник политического отдела Ленинградской военно-морской базы и военно-морских учебных заведений Ленинграда. И вновь вырос в воинском звании, став вице-адмиралом (23.01.1960г.). С декабря 1971 года — в отставке.
Герой Советского Союза (7.05.1965г.).
Скончался 25 марта 1976 года. Похоронен в Ленинграде на Богословском кладбище.