Preheat oven to 350 degrees F. and line two cupcakes trays with paper liners.
In a medium bowl, stir together flour, baking powder, cinnamon, and kosher salt and set aside. In a stand mixer or with a hand mixer, cream together butter and sugar until light and fluffy. Then beat in eggs one at a time followed by vanilla.
On low, stir in half of the milk, followed by half of the dry ingredients, then the rest of the milk and dry ingredients. Stir until just mixed together.
Divide batter between the cupcake tins, filling about 3/4 full. Bake until the cupcakes are set and a tester comes out clean, 18-20 minutes. Remove the cupcakes from the tins and let cool completely before filling and frosting.
For Caramel Filling:
Add sugar to a small saucepan over medium heat. Stir in a tablespoon of water and stir to combine. Let sit until sugar melts. Then stir occasionally (slowly) until the sugar is completely melted (some lumps may form but they will melt out).
Once sugar is completely melted and a nice amber color, add in butter, cut into pieces. It will froth and hiss but just stir it in. Then whisk in the vanilla and cream off the heat. Let the caramel cool completely before using. Refrigerating it for 30-45 minutes should thicken it enough.
For Frosting:
Beat together butter and cream cheese until light and creamy. Add in vanilla, cinnamon, and powdered sugar in 1 cup batches. If frosting is too thick, feel free to add milk in tablespoon amounts to lighten it.
When cupcakes are cool, cut out a center piece and fill each with caramel. Then replace tops on cupcakes and frost each cupcake. Drizzle finished cupcakes with extra caramel and optionally dust with powdered sugar.