If preferred, remove the skin from each chicken piece before starting. Skin-on stays crispier; skin-off allows more seasoning to penetrate the meat directly.
Add all-purpose flour to a large zip-top bag — use enough to coat all your pieces generously. Season with paprika, salt, black pepper, and any optional spices. Seal and shake to combine.
Dip each chicken piece into the buttermilk until fully coated, then transfer it into the flour bag one or two pieces at a time. Seal the bag and shake until every surface is thoroughly covered. Repeat with all remaining pieces.
Arrange the coated chicken in a single layer on a baking sheet or tray. Cover loosely with wax paper or a clean kitchen towel and leave it to rest. Wait until the flour coating turns paste-like and tacky before moving on — this step is the key to a thick, craggly, deeply crispy crust.
Pour vegetable oil into your cast iron skillet, filling it about one-third to halfway up the sides. Heat over medium-high until the oil is very hot — around 350°F. A small drop of water should spit back immediately when it's ready.
Carefully lower chicken pieces into the oil a few at a time, working in batches if needed. Never crowd the pan. Fry on each side until a deep golden-brown crust develops.
Once both sides are browned, reduce the heat to medium-low and cover the skillet with a lid. Cook covered for 30 minutes — the chicken will cook through completely but the crust will soften. Remove the lid, raise the heat again, and continue frying for a few more minutes until the crust crisps back up perfectly.
Transfer finished pieces to a paper towel-lined plate to drain. Keep completed batches in an oven set to its lowest setting while frying the rest so everything stays warm and crispy until serving.