Preheat the oven to 425°F (220°C).
Bring a large pot of salted water to a boil. Cook the lasagna noodles about 1 minute longer than the package instructions for al dente so they are pliable for rolling. Drain, rinse with cold water, and lay the noodles in a single layer on a cutting board.
Make the béchamel: melt the butter in a saucepan over medium heat. Add the flour and cook, stirring, until lightly toasted, about 2 minutes. Whisk in the milk, a large pinch of salt, and some freshly ground black pepper. Cook, stirring frequently, until the sauce thickens to a thin gravy, 6–8 minutes. Remove from heat and let cool slightly.
In a large bowl, beat the egg, then stir in the ricotta, drained spinach, 1½ cups of mozzarella, ½ cup Parmesan, ½ cup pesto, a large pinch of salt, and some freshly ground black pepper until evenly combined.
Stir the remaining ½ cup pesto into the slightly cooled béchamel sauce.
Spray a 9×13-inch baking dish with nonstick spray. Spread about one-quarter of the pesto-béchamel on the bottom of the dish.
Spread about 1/3 cup of the ricotta-spinach mixture evenly over each lasagna noodle. Starting at the short end, roll each noodle tightly and place seam-side down in the prepared baking dish.
Spoon the remaining pesto-béchamel sauce evenly over the assembled rolls. Sprinkle with the remaining 1 cup mozzarella and the remaining ¼ cup Parmesan.
Cover the dish with foil and bake until heated through and the sauce is bubbling, about 20 minutes. Remove the foil and continue baking until the cheese is browned on top, about 10 more minutes.
Sprinkle with crushed red pepper flakes if desired and let the rolls stand at least 5 minutes before serving.