Pre-heat the broiler.
Bring a large pot of water to a boil for the pasta. Salt the water and cook the pasta to al dente, according to the package directions (about 10-12 minutes total, depending on the brand).
Meanwhile, melt the butter in a saucepot over medium heat. Add the garlic and cook for 2-3 minutes. Whisk in the flour and cook for 1 minute, then whisk in the stock and milk. Let the sauce thicken to coat the back of a spoon; stir in 2 cups of cheese, the diced green chilies, corn, red bell pepper and chili powder; season with salt and pepper.
Drain the pasta and toss with the sauce. Adjust the seasonings, to taste. Place in a large casserole dish and top with the remaining cheese. Place under the broiler to bubble and brown the top and garnish with cilantro (if using).