How to Make It
Pour the water into a large stockpot. Add the fish heads and bones, 3 tablespoons of the fish sauce and the lemongrass, ginger, onion and 2 teaspoons of kosher salt. Bring to a boil. Reduce the heat to moderately low and simmer for 1 hour.
Meanwhile, cut the snapper fillets into 1 1/2-inch pieces and transfer to a medium bowl. Add 2 tablespoons of the oil, the remaining 2 tablespoons of fish sauce and toss. Refrigerate the fish for 1 hour.
Heat the remaining 6 tablespoons of oil in a small skillet. Add the garlic and cook over high heat, stirring, until fragrant and lightly golden, about 30 seconds. Pour the garlic oil into a bowl and let cool.
Strain the soup through a fine sieve, pressing hard on the solids. Wipe out the pot. Return the fish soup to it and bring to a boil. Add the mushrooms and simmer over moderate heat until just tender, about 1 minute. Add the marinated snapper and cook just until opaque, about 2 minutes. Season the soup with salt. Add the bean sprouts and scallions and stir in the garlic oil. Serve right away with sliced chiles and lime wedges.