Combine 1 tablespoon of the garam masala, 1 teaspoon of the salt, the cumin, coriander, and pepper in a 1-gallon resealable bag. Seal and shake the bag to combine. Add the lamb and shake to coat. Add the yogurt to the bag, seal, and squish to coat. Refrigerate the bag in a leak-proof container for at least 30 minutes or up to 1 hour.
Spritz 4 to 5 pieces of newspaper with vegetable oil and put in the bottom of a charcoal chimney starter. Fill the chimney with half of the charcoal and light the newspaper.
When the charcoal is lightly covered with gray ash, carefully pour it onto the bottom grate of a kettle grill and spread evenly. Top with the remaining unlit charcoal, spreading evenly so as not to suffocate the lit charcoal. Set the second grate in the kettle and cover until ready to cook.
Meanwhile, heat the vegetable oil in a 12-inch straight-sided saute pan over medium-high heat until it shimmers and almost begins to smoke. Add the onion and remaining teaspoon of salt, and cook, stirring occasionally, until the onion is browned around the edges, 11 to 12 minutes. Reduce the heat to medium-low and add the garlic, ginger, and chile. Cook, stirring constantly, until the onions have softened and browned completely, approximately 7 minutes. Sprinkle with the remaining tablespoon of garam masala and stir several times to coat.
Add the tomatoes and cook, stirring occasionally, until they have reduced slightly and deepened in color, 15 to 20 minutes.
Remove the lamb from the yogurt mixture, leaving as much yogurt on the meat as possible. Thread the pieces of lamb, 1/4 inch apart, onto the skewers. Grill until the yogurt has slightly charred or blackened, about 2 minutes on each side. Remove the lamb from the skewers. Add the lamb and coconut milk to the tomato mixture and stir to combine and heat through. Transfer to a serving bowl, garnish with mint or cilantro, and serve over basmati rice.