Родился 20 апреля 1919 года в селе Кремяное (по другим данным — Крымянское), ныне Кореневского района Курской области, в семье служащего. Русский.
После окончания 7 классов работал токарем в Курске на ремонтном заводе имени М. И. Калинина, одновременно учился в аэроклубе. В РККА — с 1937 года. В 1939 году окончил военную авиационную школу лётчиков. Член ВКП(б) с 1943 года.
Указом Президиума Верховного Совета СССР от 13 апреля 1944 года удостоен звания Героя Советского Союза с вручением ордена Ленина и медали "Золотая Звезда" (№ 1450).
К 9 мая 1945 года помощник командира по воздушно-стрелковой службе 150-го Гвардейского ИАП (13-я Гвардейская истребительная авиационная дивизия, 3-й Гвардейский истребительный авиационный корпус, 5-я Воздушная армия, 2-й Украинский фронт) Гвардии капитан Н. И. Леонов совершил около 250 боевых вылетов, в воздушных боях сбил лично 21 самолёт противника.
После войны продолжал служить в ВВС. В 1951 году окончил Высшие офицерские лётно-тактические курсы.
С 1957 года полковник Леонов — в запасе. Жил в городе Батайске Ростовской области. Работал контролёром на заводе. Умер 3 мая 1997 года, похоронен в Батайске на Новостроенском кладбище.
Награждён орденами: Ленина (13.04.1944), Красного Знамени (22.07.1943, 26.10.1943, 31.12.1944), Отечественной войны 1-й степени (11.03.1985), Красной Звезды (26.01.1943, 30.12.1956); медалями, в том числе "За отвагу" (23.11.1942) и "За боевые заслуги" (24.06.1948).