Bloom the saffron as you prefer - if using the ice method (which is what I would suggest), grind strands if using strands and place the ground saffron on top of an ice cube. Leave the ice to melt and the saffron to melt into the water. As it nears melting, start preparing the other ingredients. The alternative method is to add a little hot water to the saffron (but not too hot) and allow to release color and flavor a minute or two. Remove and whole strands after.
Dice the chicken into roughly 1 - 1 ½inch (2 ½ - 4cm) cubes. Cut the onion into thin slices. If you choose to add garlic, crush or finely chop the garlic.
Place the diced chicken, onions, garlic, if using, yogurt, olive oil, lemon juice, salt and pepper in a container or freezer bag. Mix everything together well so that the meat is evenly coated with all of the ingredients then cover/seal and place in the fridge for at least four hours but ideally overnight to allow the flavors to build up.
Take the chicken out of the fridge around 20 - 30 minutes before cooking to come to room temperature. If using wooden skewers, be sure to soak them ahead of time.
When ready to cook, heat the grill or griddle pan over medium high heat. Shake off any excess marinade mixture - including the onions - and thread the chunks of chicken onto skewers. Don't cram the pieces too close to help them cook more evenly. Grill for a few minutes on each side - you should see the outside take on a deeper yellow color and a slight browning. After cooking on both sides, remove when the chicken is cooked through (around 8 - 10 minutes in total). I highly recommend serving with skewers of grilled tomatoes and your choice of other sides eg rice, salad (see above for ideas).