Well I can help you with the lasers.
I usually have groups of lasers, such as one group for a doorway.
If the doorway is 128 units wide, you'll need 3 lasers.
Each laser beam has a env_laser at one end, and a info_target at the other.
It's useful to use a naming system, like LaserRave01 and TargetRave01 etc.
Next to each group of lasers, put a logic_branch entity.
This isn't necessary, but makes everything a lot simpler and easier to change later.
Get to the logic_branch entity's properties and make a few outputs.
Name the logic branch to fit the place, such as RaveLaserController.
Add the output:
On User1 > RaveLaser01 > Toggle
On User1 > RaveLaser 02 > Toggle
And add as many outputs as there are lasers, specifying the name in each one.
Then make a button to control the laser.
The button is usually a prop_dynamic with a nodraw brush surrounding it.
Tie the nodraw brush to the func_button entity.
Make the func_button output as follows:
OnPressed > RaveLaserController > FireUser1
Now you have one button that triggers a branch that controls multiple lasers!
Hope that helps!