The 0.01 seconds would be difficult to be sure about over 20 minutes, but at 30 ppm it would only be 0.04 seconds.
The whole problem comes down to setting the clocks on the cellphones. It doesn't make much difference if the clocks were set at the previous hour or at the point where the music starts, you are looking to get some time-critical signal to lots of cellphones at the same time.
I think that the best approach to this might be to use the GPS time. The GPS signals have extremely accurate clocks, although GPS time is a few seconds different from UTC. If you can get an app to look at GPS time, and know whether or not you have applied the UTC correction, and use GPS time to start the music and the fireworks.
The GPS system only uses signals travelling to the GPS receivers, there is no signal back from a GPS receiver, for instance in a cellphone, to the satellites. As a result, it is a pure broadcast signal and every receiver gets the same signal. That is very different from cellular signals, wifi or bluetooth which are all duplex signals. So when your phone asks a time server for the time of day, that time signal only goes to your phone, via an indeterminate number of devices, so the time signal may be corrupted by fractions of a second. If other phones also ask for the time, each packet of data is separate, and may be delayed differently.
I guess that you will need to have some app to start the music at the right time anyhow. I doubt if anything like that is fitted to most phones. The app could also keep the timing in line during the 20 minute performance, so your local accuracy becomes unimportant, as long as your cellphones can get a clear satellite signal.