Слово "напакостить" ( однокоренное с «пачкать»), обычно употребляется в значении (1) "причинить кому-нибудь зло, неприятность, вред, подсидеть кого-нибудь, навредить кому-нибудь, подвести под монастырь, подложить свинью и др.", а также (2) "какое-то дело сделать так неумело, что даже испортить".
А вот слово "нагадить" - тоже означает «испортить, нанести умышленно вред, сделать гадость, наделать пакостей", а также имеет значение тех же синонимов, что и «напакостить». Но это слово восходит к глаголу «гадить»(о животных, птицах), что похуже, чем просто «напачкать, нагрязнить».
Разница между ними в том, что если «напакостить» слово разговорное, сниженной лексики, то слово «нагадить» не просто разговорное, но ещё более сниженное - фамильярное и вульгарное.