In a large bowl, combine buttermilk, garlic powder, onion powder, paprika, salt, and black pepper. Add the chicken pieces, ensuring they are fully submerged. Cover and refrigerate for at least 1 hour, or overnight for best flavor.
In another bowl, whisk together the flour, baking powder, and cayenne pepper (if using). Remove the chicken from the buttermilk mixture, allowing excess to drip off, then dredge each piece in the flour mixture, pressing lightly to adhere.
In a large skillet, heat about ½ inch of vegetable oil over medium-high heat until shimmering. Carefully add the chicken pieces skin-side down, working in batches if necessary to avoid overcrowding.
Fry the chicken for about 7-10 minutes on each side, or until golden brown and cooked through (internal temperature should reach 165°F). Adjust the heat as needed to prevent burning.
Once cooked, transfer the chicken to a plate lined with paper towels to drain excess oil. Let rest for a few minutes before serving.