This is an area that has been explored at length by modellers with cotton wool, natural, sprayed or dyed being the favourite.
U tube has some good effects videos that are very realistic indeed.
However I adopted a more radical approach much to my wife's horror!
Whilst cotton wool, especially when warmed, can make realistic cannon and musket shots, real smoke wins every time. I considered tobacco but did not want to start smoking. Garden smoke effects were looked into but they are expensive and not very good for what I wanted.
Indoor fireworks are an area for exploration, but for volumes of the stuff a bee smoker was thought to be ideal.
As I have the use of a garage, I could ventilate it although the wife was still not keen! With suitable precautions the results were literally eye watering after very little practise.
However, the smell and the wife's disapproval make this a niche effect.
Subsequent investigations following a visit to an amateur theatre production, were made into fog machines. This was the best answer both for me and the wife. Lots of smoke and no smell. The machines are cheap and so is the fuel.
E bay is the source I used and for around thirty English pounds you can puff away to your hearts content.
I also experimented with fire itself, although caution must be exercised! By making a 'bath' of strong silver foil to contain the fire and taking great care of where the flames will go good results can again be obtained. I used a small piece of balsa wood, with a Small amount of barbecue fuel in the tray. You need to take care as if too much fuel is used you not only have a fire hazard but the photo will look like a Nuclear strike.
I found that by using the camera on a night setting the fire lit the background, giving good results.
Happy modelling
Chris