Place eggs in a single layer in a saucepan and cover with cold water by about 1 inch.
Bring to a boil over high heat, then immediately cover and remove from heat. Let stand for 12 minutes.
While eggs cook, cook bacon in a skillet over medium heat until crisp, about 8-10 minutes. Drain on paper towels, then crumble.
Transfer cooked eggs to a bowl of ice water and let cool for 5 minutes before peeling.
Chop peeled eggs into small pieces (about ¼-inch chunks) and place in a mixing bowl.
Add mayonnaise, Dijon mustard, lemon juice, red onion, dill, salt, and pepper to the chopped eggs.
Gently mix until just combined, keeping some texture rather than mashing completely smooth.
Toast bread slices lightly if desired, then spread one side of each slice with butter or mayonnaise.
Place lettuce leaves on 4 bread slices if using, then divide egg salad evenly among them.
Sprinkle crumbled bacon generously over the egg salad on each sandwich.
Top with remaining bread slices, cut sandwiches in half if desired, and serve immediately.