In an small fry-pan (skillet), toast the saffron over medium heat, shaking the pan often, until a shade darker, 1 to 2 minutes. Transfer to a large bowl, let cool, and then, using the back of a wooden spoon, crush the threads to release their flavour.
Add the garlic, parsley, 1 Tbsp of the cilantro, the ginger, 1/4 tsp salt, and a few grinds of pepper; stir to combine. Add the oil and 2 Tbsp water and stir until combined.
One by one, add the chicken pieces to the marinade, turning to coat each one before adding the next. Cover and refrigerate, turning the pieces once or twice, for 30 minutes.
Scatter the onions over the bottom of an 11- to 12-inch tagine (or large, deep fry-pan). Arrange the chicken in a single layer on top and drizzle over any remaining marinade. Dot with 1 Tbsp of the butter, then put over medium heat and cook, turning the chicken occasionally, until the onions are translucent, about 15 minutes.
Add 1/4 cup water and then cover with the lid, allowing a small air vent for steam. Turn the heat down to low and gently simmer, turning the chicken from time to time, until cooked through and tender, about 45 minutes. Add a little more water to the mixture if it becomes too dry.
Meanwhile, put the apricots, 2 Tbsp of the honey, the cinnamon stick, a few drops of orange blossom water, if using, and 3/4 cup water in a 2-quart saucepan. Bring to a simmer, then turn the heat down and simmer gently until the apricots are tender and the liquid has reduced to about 2 Tbsp of syrup, 10 to 15 minutes. If it seems to be drying out, add a bit more water as needed. Remove from the heat and let cool. Discard the cinnamon stick.
Melt the remaining 1 Tbsp butter in an 8-inch non-stick fry-pan over medium-low heat. Add the remaining 2 Tbsp honey and the walnuts and cook, constantly and slowly turning the walnuts in the honey, until they have a light, chewy coating, 4 to 5 minutes (I took the colour further to get a dark caramel). Transfer to a plate, spread into a single layer, and let cool. When cool, separate any walnuts that are stuck together.
When the chicken is done, arrange the apricots around the chicken, drizzle with the apricot syrup, and add more water if needed; cook the tagine, partially covered, over low heat for 5 to 10 minutes more. (*Note: if the juices haven’t thickened, follow my tip below). Season to taste with salt and pepper, scatter the walnuts and the remaining 2 Tbsp coriander over the stew, and serve with rice or couscous. As it’s a sweet dish, I’d recommend you also serve it with a citrus salad.