Cook the Pasta: Bring a large pot of salted water to a boil. Cook macaroni according to package instructions until al dente. Drain and set aside.
Cook the Bacon: In a large skillet, cook the bacon until crispy. Remove and place on a paper towel-lined plate. Chop into bite-sized pieces.
Make the Cheese Sauce: In a medium saucepan, melt the butter over medium heat. Whisk in the flour and cook for 1-2 minutes to create a roux. Gradually add the milk and heavy cream, whisking constantly to avoid lumps. Cook for 3-4 minutes until the sauce thickens slightly. Stir in the Parmesan and cheddar cheese (if using) until melted and smooth. Add garlic powder, black pepper, and salt to taste.
Combine Everything: In a large mixing bowl, combine the cooked pasta, cheese sauce, and crispy bacon (reserve some bacon for garnish if desired). Toss until everything is well coated.
Bake (Optional): Preheat the oven to 375°F (190°C). Pour the mac and cheese into a 9x13 baking dish. If using the topping, mix breadcrumbs, grated Parmesan, and melted butter, then sprinkle evenly over the pasta. Bake for 15-20 minutes until the top is golden and bubbly.
Serve: Serve warm, garnished with additional bacon or Parmesan if desired.