Dalam masa muda, Castillo tumbuh besar di Las Cruces, New Mexico, dan bermain untuk Mayfield High School di bawah pelatih Arturo Garibay. Pada tahun 2002, saat masih menjadi siswa kelas 10, ia dinobatkan sebagai Pemain Terbaik Negara Bagian oleh NSCAA/Adidas High School. Castillo merupakan salah satu pemain terbaik di New Mexico dan membantu Mayfield High School mencapai dua kali final kejuaraan nasional.
Pada tahun 2005, Castillo mulai menarik perhatian tim profesional saat bermain untuk klub lokalnya dalam Dallas Cup, salah satu turnamen pemuda terbaik di dunia. Timnya berhasil mencapai final Dallas Cup untuk Super Group, namun kalah 0-1 dari Atletico Paranaense dari Brasil.
Castillo juga menjadi pemain dalam program pengembangan Olimpiade selama bertahun-tahun. Adiknya, Noel Castillo, bermain untuk tim cadangan Indios de Ciudad Juárez di Meksiko.
Karier profesional Castillo dimulai dengan Santos Laguna di Primera División de México. Setelah menjadi pemain reguler di Santos dan memenangkan kejuaraan pada tahun 2008, Castillo pindah ke Club América pada pertengahan musim Januari 2009. Selama masa libur, Castillo dipinjamkan ke Tigres UANL dan bermain untuk mereka selama musim 2009/10. Ia mencetak gol pertamanya untuk Tigres melawan mantan klubnya, Santos Laguna, pada 30 Agustus 2009.
Pada 23 November 2011, Castillo setuju untuk dipinjamkan ke Club Tijuana; pada 7 Juni 2012, ia bergabung dengan Tijuana secara permanen. Castillo pindah ke Atlas pada masa libur 2014. Pada 9 Januari 2018, Castillo pindah ke Colorado Rapids dengan status pinjaman selama satu tahun dengan opsi untuk membeli. Castillo melakukan debutnya pada 10 Maret 2018, dalam kekalahan 1-2 dari New England Revolution. Pada 1 Juni 2018, ia mencetak gol debutnya untuk klub dalam kekalahan 1-2 dari Vancouver Whitecaps FC. Sebelum musim 2019 dimulai, Castillo ditukar ke New England Revolution dengan Kelyn Rowe. Ia melakukan debutnya pada 2 Maret 2019, dalam hasil imbang 1-1 melawan FC Dallas. Pada 17 Januari 2020, Castillo pindah ke Atlanta United setelah kontraknya tidak diperpanjang oleh New England pada akhir musim 2019. Setelah musim 2020, Castillo dilepas oleh Atlanta pada 24 November 2020. Pada 13 April 2021, Castillo bergabung dengan FC Cincinnati dengan kontrak selama satu tahun. Setelah musim 2021, Cincinnati tidak memperpanjang kontrak Castillo.
Dalam karier internasionalnya, Castillo pernah bermain untuk tim nasional Meksiko. Pada awal Agustus 2007, pelatih Meksiko Hugo Sánchez memanggil Castillo untuk tiga pertandingan persahabatan melawan Kolombia, Panama, dan Brasil. Pada 22 Agustus 2007, Castillo melakukan debutnya dengan tim nasional Meksiko dan masuk sebagai pemain pengganti pada menit ke-53 dalam pertandingan persahabatan melawan Kolombia. Pada Maret 2008, ia juga menjadi anggota skuad Meksiko U-23 yang berpartisipasi dalam Turnamen Pra-Olimpiade CONCACAF 2008 untuk lolos ke Olimpiade Musim Panas 2008.
Castillo juga memenuhi syarat untuk bermain untuk tim nasional Amerika Serikat setelah perubahan baru-baru ini dalam regulasi FIFA. Aturan baru ini memungkinkan pemain dari segala usia untuk mengubah afiliasi nasional mereka satu kali jika mereka memiliki kewarganegaraan di negara baru mereka dan belum pernah bermain dalam pertandingan tingkat senior yang kompetitif.