Родился в Ораниенбауме в семье рабочего, окончил 9 классов средней школы, затем летнюю школу Осоавиахима, в 1934 году окончил центральный аэроклуб им. Чкалова в Тушино. С 1939 года служил в авиации РККФ. За участие в советско-финской войне удостоен ордена Красного Знамени.
Великую отечественную начал на истребителе И-16 (тип 29). Первый боевой вылет во время ВОВ совершил 29 июня 1941, первую победу в воздухе одержал уже 15 июля, сбив тяжёлый истребитель Me-110, а 22 июля сбил сразу три самолёта: два Ю-88 и один Me-110. К концу июля на счету Костылёва уже 7 воздушных побед.
В конце августа на новом самолёте ЛаГГ-3 сбивает Me-109, а 16 сентября в воздушном бою над линкором «Марат» в составе шестёрки, в которую также входил И. А. Каберов, рассеивает группу Ю-87, сбив один из них. Также принимал участие в защите линкора «Марат» от авианалёта 23 сентября.
2 ноября звено, в которое входили Костылёв и Каберов, перехватило в районе острова Соммерс и уничтожило финский СБ (бомбардировщих АНТ-40(СБ) советского производства). Позже, летая вместе с Каберовым, он по ошибке сбил свой истребитель И-153, управляемый начальником штаба подполковником Бискупом, который по счастливой случайности остался жив — лётчики по привычке приняли его за финского лётчика.
К началу февраля 1942 года имел на счету 18 воздушных побед, однако 5 февраля был сбит сам. Раненный в руку, он сумел воспользоваться парашютом и ветер вынес его к своим.
К апрелю 1942 года на счету Костылёва 233 боевых вылета, 59 воздушных боёв, 9 самолётов сбитых лично и 34 в составе группы. С этими данными он был представлен к присвоению звания Героя Советсвого Союза.
17 мая Костылёв снова совместно с Каберовым сбил 2 Мессершмита, которыми управляли немецкие асы Герхард Лаутеншпагер (31 победа) и лейтенант Осси Унтерлерхнер (27 побед). С мая по ноябрь 1942 года Костылёв летает на Харрикейне.
22 октября 1942 Костылёв командует эскадрилией истребителей, уничтоживших 14 вражеских самолётов в бою за остров Сухо. В результате провалена попытка высадки вражеского десанта в районе дороги жизни. 23 октября гвардии капитану Костылёву присвоено звание Героя Советского Союза (медаль № 654).
В феврале 1943 года Костылёв был во второй раз представлен к званию Героя Советского Союза, но трагический инцидент помешал ему в получении второй звезды героя. По случаю представления к награде Костылёву был предоставлен отпуск, во время которого он посетил жившую в осаждённом Ленинграде мать и познакомился с бытом лениградцев. Незадолго до окончания отпуска Костылёв познакомился с тыловым майором и был приглашён к нему в гости в Ораниенбауме. Контраст в жизни офицера и простых жителей настолько поразил Костылёва, что между ним и майором возникла драка. В результате Костылёв был осуждён, разжалован до рядового, лишён всех наград, новое представление к званию Героя было отозвано.
Справиться с неприятностями Костылёву удалось при помощи друга, лётчика-аса В. Ф. Голубева. Голубев ходатайствовал о переводе Костылёва в свою эскадрилию.
К полётам в 4-м ГвИАП Костылёва допустили только в апреле 1943 года. В первом бою 21 апреля Костылёв сбил над Копорским заливом финский ФИАТ, а затем, прижав к воде второй, позволил сбить его своему ведомому. После этого боя Костылёв был назначен командиром звена. Сражаясь на Ла-5, сбил 9 самолётов, в том числе три FW-190. 22 апреля совместно с лейтенантом А. М. Селютиным провёл успешную атаку на три звена фокевульфов, при этом самолёт хауптмана Эрика Рудорффера был выведен из строя, но дотянул до своих, а его ведомый Рудольф Герке (27 побед) погиб. 2 августа лично сбил два Fw 190, пилот одного из них, Херберт Броэндле (58 побед), спустился на парашюте и попал в плен.
В 1944 году за проявленное мужество Костылёву присвоено звание майора и возвращены все боевые награды. Представление ко второму званию Героя Советского Союза, однако, не состоялось.
С 1944 и до конца войны Костылёв служил в должности главного инспектора ВВС Краснознамённого Балтийского Флота. В этой должности полёты ему запрещались, однако этот запрет при каждой возможности нарушался. Прибывая в различные части с инспектированием, Костылёв сбил ещё несколько самолётов, при этом победы не записывались на его имя.
Так, 21 июля 1944 года два Ла-5ФН, управляемые Костылёвым и лейтенантом Прасоловым в неравном бою с пятью Fw-190 сбили 3 самолёта противника.
Данные об общем количестве побед, совершённых Костылёвым, в различных источниках не совпадает. Всего совершил от 400 до 418 боевых вылетов, принял участие в 89 (по другим данным 112) воздушных боях, сбил от 46 до 54 самолётов противника.
После войны остался на службе в ВМФ. Уволился в запас в 1953 году. Умер без средств к существованию и помощи со стороны правительства 30 ноября 1960.
Похоронен в соответствии с завещением на мемориальном кладбище в Мартышкино.
Именем Костылёва названа одна из улиц города Ломоносов.