Right, well you really do need to use multi_managers (henceforth MMs) to do something like this. A MM is just like lots of trigger_relays all put together.
The sequence of events is actually quite simple here. It works like this:
Button ---> everything else
You can use a MM to trigger up to 16 unique names. If you need more than this, add another MM with the same name. Get both your func_buttons to target the MM.
Now you need to set up the effects. The sprite should just toggle between on and off. I assume you are using an env_laser or env_beam for your laser effect. To make an eratic laser, you could just increase the NoiseAmplitude (this will make a laser that arcs wildly between its start and end point). Alternatively, you can make a laser that switches randomly between different endpoints, simply by adding more info_targets of the same name.
Bear in mind that if you make the glass a func_breakable, you may need to set "only on Trigger" to prevent the player breaking it and spoiling your sequence. In this case you must trigger the breakable using a MM as described below, since it will be immune to all damage.
Use an env_explosion for the explosion. The lights can just be toggled. Now all that's left is to worry about what happens to the water. I don't know how you want to do this, but you will have to get rid of it somehow. The most basic way is to create a trigger_relay called "waterkill" and have that killtarget the func_water (note that MMs cannot do this). You will need to trigger this relay using the MMs.
Once all that is set up, you must make sure all the effects are off, ready to be triggered. Then go to the MM(s) and turn off SmartEdit. Use the "add" button to add keys; type in the name of an entity that you want to trigger, with a value equal to the amount of time (in seconds) to wait before triggering (that is, how long after the button has been pressed). Keep doing this until all of the effects are listed, and remember only to give each MM 16 items at most.
For some of these entities, you may need to turn them off after they've been turned on. Just add them to your MMs again, but with a different delay. They will be created as entityName#1 in the list of MM targets. You could even fire the same thing 16 times if you like - ent, ent#1, ent#2....etc.
Finally, you must prevent the buttons from working again or weird s**t will happen when they are next pressed! There are several ways to do this. Here's a quick and dirty method:
Give both your buttons a name. Now create a trigger_changetarget called "change" that is set to affect the buttons and change their target to "null" (or any other name that is not used in your map). Now, add the key "change" to one of your MMs, with a delay of 0.
That means that the buttons can only be used once; every time they are used afterwards, they will trigger something that isn't there, so nothing will happen.
If you prefer to "lock" the buttons fully, you will need to use and env_global and a multisource, with the multisource acting as a master. I can explain that too if you like, but I expect you've had enough new stuff already for now 