Mix garam masala, chili powder, ginger, and turmeric in a small bowl; set aside.
Place cauliflower, a light sprinkling of salt, and 1/4 cup water in a large (12-inch) skillet. Cover and turn burner on high. Cook until water has nearly evaporated, and cauliflower is crisp-tender, about 3 minutes.
Meanwhile, mix yogurt and 2 teaspoons of the spice mixture in a medium bowl; add cauliflower and toss to combine. (The hot cauliflower thins the yogurt, so If there’s time to either cool the cauliflower a bit before adding it to the seasoned yogurt, or to add the hot cauliflower to the yogurt and let them cool together, do it. Otherwise just keep going with the recipe. There’s not a huge difference.)
Return skillet to the burner and heat 2 teaspoons of the oil. Add cauliflower and cook until well browned on both sides, about 5 minutes total. Remove cauliflower and then add remaining 2 tablespoons of oil and the onion; sauté, stirring to scrap up brown bits, until it just starts to soften, about 4 minutes. Add remaining spices; stir until fragrant, a minute or so. Add tomato sauce, chickpeas, coconut milk, and cauliflower. Bring to simmer, reduce heat to low and cook, partially covered and frequently stirring, to blend flavors, 10 to 15 minutes. Stir in cilantro and serve.