Spray 9x9 pan lightly with cooking spray. Line with 2 pieces of parchment paper crossed over each other, leaving a 1 inch overhang. Spray parchment lightly with nonstick cooking spray.
Combine butter, marshmallows, sugar, milk, and salt in medium sized saucepan. Cook over medium-high heat until marshmallows have melted and mixture is smooth, 6 to 7 minutes, stirring frequently. Remove the pan from the heat.
4 tablespoons unsalted butter, 3 cups mini marshmallows, 1 cup sugar, ½ cup whole milk, ¼ teaspoon kosher salt
Stir in vanilla. Stir in chocolate until melted and completely mixed with marshmallow mixture.
1 teaspoon pure vanilla extract, 12 oz. bittersweet chocolate, coarsely chopped
Pour mixture into prepared pan. Let cool 30 minutes at room temperature, then refrigerate until set, at least 1 hour and up to 3 days.
Grasp the parchment paper on each side, and lift the whole piece of fudge onto a cutting board. Use a sharp knife to cut the fudge into approximately 60 1-inch squares. Place desired toppings into small bowls. With gloved hands (to prevent fudge from sticking to your hands), roll into balls. Roll in toppings.
Refrigerate until firm, at least 1 hour. Store in refrigerator in an airtight container with layers of waxed or parchment paper between each layer.
Notes
Gloves: I usually wear disposable food-safe gloves to roll the balls. You'll find that the fudge tends to get a bit sticky because of your warm hands and the gloves help to prevent the fudge from sticking to your fingers.
Flavor options: To flavor the fudge to complement the coatings, replace the vanilla with ½ teaspoon pure peppermint extract, ¼ teaspoon pure almond extract, or 1 tablespoon raspberry liqueur, such as Framboise. You can also try adding 2 teaspoons espresso powder when you melt the marshmallows (with the sugar).