Castillo debuteerde in 2011 voor CD Universidad Católica.[1] In zijn eerste seizoen kwam hij tot drie optredens. In zijn tweede seizoen veroverde hij een basisplaats en scoorde hij keer voor Universidad Católica. Op 25 januari 2014 bereikte Club Brugge een principe-akkoord met Universidad Católica over een transfer van Castillo.[2] Twee dagen later werd de deal officieel afgerond. Club Brugge betaalde vijf miljoen euro voor de Chileense spits, die zich tot medio 2018 aan de club verbond.[3]
Op 9 februari 2014 maakte hij na 13 minuten zijn eerste doelpunt voor Club, bij zijn competitiedebuut tegen KRC Genk.[4] Daarmee was Nicolás Castillo de 46e speler van Club Brugge die scoorde bij zijn debuut. Ook was hij de achtste speler van Club die debuteerde in een wedstrijd tegen KRC Genk (net zoals Ivan Perišić, Óscar Duarte, Stijn Stijnen, Karel Geraerts, Milan Lešnjak, Dorge Kouemaha en Daan Van Gijseghem). Ondanks dat hij topschutter was bij Club Brugge met tien doelpunten in zeventien wedstrijden verhuurde de club hem in januari 2015 tot het einde van het seizoen 2014/1 aan 1. FSV Mainz 05.
Castillo maakte negen doelpunten in elf interlands voor Chili –20. Hij debuteerde op 23 maart 2013 in het Chileens voetbalelftal, in een WK-kwalificatiewedstrijd tegen Peru. Hij viel na 70 minuten in voor Jean Beausejour. Chili verloor met 1-0 na een late treffer van Jefferson Farfán.[5] Castillo maakte op 28 mei 2016 zijn eerste doelpunt als international, in een oefeninterland tegen Jamaica (1-2 verlies). Hij won in 2016 de Copa América Centenario met zijn landgenoten. Hij kwam op dit toernooi zelf alleen in actie in de tweede verlenging van de finale, als invaller voor Eduardo Vargas.