Trim just a bit at the end of the sprouts, discard some tough outer leaves if needed, and then cut them in half through stem end to keep the leaves intact.
Peel the apples if you want. Dice into ½-inch thick pieces, we need about 1¼-1½ cup. If you are not cooking them right away, cover with lightly salted water to prevent them from turning brown.
Dice onion, we need about ¼ cup. Cut/dice bacon into small pieces, about ½ inch.
Place a heavy-bottomed pan (cast iron is ideal) over medium-low to medium heat. Add bacon and cook until the fat is rendered and the meat is browned. Flip/stir as needed to avoid burning the bacon.
Take the bacon pieces out of the pan and set aside. Strain the bacon fat or scrape off any gritty browned bits at the bottom of the pan. We need enough bacon fat to generously coat the pan's bottom.
Add Brussels sprouts with cut-side down in a single layer. Let them cook undisturbed until the bottom is beautifully browned, about 3-4 minutes. Then flip the sprouts and continue to cook until the inside feels soft while the outside is still crisp, another 3-4 minutes. Adjust cooking time and heat as needed. Transfer them to a clean plate.
Add diced onion to the pan, stir and cook. Add 1 teaspoon of butter, cook until onion starts to soften and turn translucent, about 2 minutes. Add diced apples. Continue to stir and cook for another 2 minutes, or until the apples reach your desired textures. Sprinkle half of the salt and a pinch of pepper, give everything in the pan a quick stir.
Add bacon, Brussels sprouts, the remaining butter and salt to the pan. Stir and cook briefly until butter is melted and the flavors are combined. Transfer to a serving plate immediately. Sprinkle more black pepper on top if desired.