Preheat oven to 350° F. Line a muffin pan with cupcake liners or grease with butter or nonstick cooking spray.
In the bowl of a stand mixer fitted with a paddle attachment, or in a large bowl with a hand-held mixer, beat the peanut butter and sugar on high speed until light and fluffy, and the mixture sticks to the sides of the bowl. This should take about 4-5 minutes.
In a separate bowl, combine the flour, baking powder, baking soda, and salt. Whisk together the buttermilk, eggs and vanilla extract in a third bowl. Alternately add the wet and dry ingredients to the mixer in 3 additions, starting and ending with the dry ingredients.
Spoon the batter into the prepared cupcake liners, filling each only half way. Bake until tops spring back when touched and a toothpick inserted into the center comes out clean, 14-16 minutes. Let cool completely.
To make the frosting:
Beat the cream cheese, butter, peanut butter, powdered sugar, vanilla and salt together until smooth. Add enough milk or cream to get a spreadable consistency. Beat on high another 1-2 minutes until light and creamy.
To assemble the cupcakes:
Use a small knife to cut a small well 1 inch deep into the tops of each cupcake. Spoon about 1 teaspoon of the caramel into the well, it should not overflow.
Top each cupcake with the frosting, either with a knife or with a piping bag and tip. Drizzle the cupcakes with more caramel and top with peanuts.
Store cupcakes in the refrigerator.
Notes
Note: I used store-bought caramel ice cream topping, but you can also make your own.