In a small saucepan, warm the milk over low heat until it is just warm to the touch (about 110°F). Remove from heat and sprinkle the instant yeast and granulated sugar into the warm milk. Let it sit for about 5-10 minutes until it becomes frothy.
In a large mixing bowl, combine the all-purpose flour and salt. Make a well in the center and add the yeast mixture along with the room temperature butter. Stir until the dough begins to come together.
Transfer the dough to a lightly floured surface and knead it for about 5-7 minutes until it is smooth and elastic. Form it into a ball and place it in a greased bowl. Cover it with plastic wrap and let it rise in a warm place until it doubles in size, about 1-2 hours.
While the dough is rising, take the chilled unsalted butter and place it between two sheets of parchment paper. Using a rolling pin, pound the butter into a rectangle approximately 1/2 inch thick. Chill it in the refrigerator while your dough rises.
Once the dough has risen, punch it down and roll it out on a floured surface into a rectangle about 1/4 inch thick. Place the chilled butter rectangle in the center of the dough. Fold the dough over the butter, sealing the edges to encase the butter completely.
Roll the dough into a long rectangle, about 1/4 inch thick. Fold it into thirds, like a letter. This is your first turn. Wrap it in plastic wrap and refrigerate for 30 minutes. Repeat this rolling and folding process two more times, chilling the dough in between turns.
After the final turn, roll the dough out into a large rectangle and cut it into triangles. Starting from the wide end, roll each triangle tightly toward the point to form the croissant shape. Place them on a baking sheet lined with parchment paper.
Cover the shaped croissants with plastic wrap and let them rise in a warm place until they have doubled in size, about 1 hour.
Preheat your oven to 400°F (200°C). In a small bowl, whisk together the whole egg and 2 tablespoons of milk. Use this mixture to brush the tops of the croissants for a beautiful golden finish.
Bake the croissants in the preheated oven for 15-20 minutes, or until they are golden brown and flaky. Remove them from the oven and let them cool slightly before serving.