Question: I have a push button in a Revit plug-in. When I click on it I would like to invoke two different commands (custom commands). Is that possible?

I use Revit 2012 Architecture API and my platform is C# .NET

Answer: 
If your two commands are IExternalCommand implementations then certainly.

Create another IExternalCommand interface, and just have it call the entry points of the two commands you want (same as calling any other class method).

You may need to ensure that your transaction management is correct between the three commands.
Agreed. If you are wanting one single UI button to invoke (2) separate IExternalCommands, then you need to implement some sort of logic in a single IExternalCommand to read a state of some sort and then execute your desired Method based on the result of the state.

You might also want to initialize the state of your variable in your App.cs OnStartup() method to reset each time Revit is opened.