In a large mixing bowl, cream together the softened butter and cream cheese until smooth and creamy. Add the granulated sugar and mix until fully incorporated.
Gradually add the all-purpose flour and salt to the butter mixture, mixing until the dough comes together. Form the dough into a ball, then flatten it into a disk. Wrap in plastic wrap and refrigerate for at least 2 hours or overnight for best results.
In a small bowl, combine the hazelnut spread, chopped hazelnuts, and vanilla extract. Mix until well blended; set aside.
Once chilled, divide the dough into four equal pieces. On a lightly floured surface, roll one piece of dough into a circle (approximately 1/8-inch thick).
Evenly spread a quarter of the hazelnut mixture over the dough circle, leaving a small border around the edges.
Using a sharp knife or pizza cutter, cut the circle into 8 equal triangles. Starting from the wide end of each triangle, roll up toward the tip, creating a crescent shape.
Place the rolled rugelach on a parchment-lined baking sheet, with the tip facing down. Brush the tops with the beaten egg for a glossy finish. Repeat the process with the remaining dough and filling.
Preheat the oven to 350°F (175°C). Bake the rugelach for 20-25 minutes, or until they are golden brown.
Once baked, allow them to cool slightly on a wire rack. Dust with powdered sugar before serving for a beautiful presentation.