Everyone will see the action, and everyone will be able to use the action. The problem is, that if player A uses the action, the script that is then run, only runs on player As computer, not on any other computer. I guess the reason it worked when you moved the ammocrate was because you used setpos, which is a global command.
An example: You have an object, lets say a jeep. You add an action to it, and when the action is used, it runs a script, say bomb.sqs. Now, if you add the action to the jeep in the init.sqs, everyone will be able to see it. Lets say player A and player B plays this mission together. Both sees the action when they get close to the jeep, but player A is the one who presses the action. On player As computer, bomb.sqs will then run. In bomb.sqs, player A is told to press on a location on the map. At the location he presses, a bomb will be created. Now, since the script only runs on his computer, if the script uses camCreate to create the bomb, player B won't see the bomb. If, however, createVehicle is used, both player A and player B will see the bomb, since createVehicle is a global command.
What decides if a command is global or local is if the result of the command happens on all computers, even though the command was given only on one computer. camCreate is a local command, because what it creates only shows on the computer it's run on. createVehicle is a global command since what it creates shows on all computers, even though it was only run on one computer. It's the same for addaction. It is a local command because the result of the command, namely the script that runs once you use the action, is only run on one computer, the one that belongs to the player who used the command...
Bah, now I'm getting confused myself
I'm a rather bad teacher though, so you should probably look at some tutorials and such