All variables in C/C++ are defined like "int myVariable;" which tells the compiler to create an integer variable and call it "myVariable".
In the same style "IRrecv irrecv(RECV_PIN)" creates a thing called "irrecv" with a type of "IRrecv" (rather than "int"). The type IRrecv will have been defined within the IRemote library. I used the word "thing" rather than "variable" because in this case what is created is an instance of the class IRrecv. (Think of your own dog being an instance of the class "dogs"). In this case when you create a new instance of IRrecv you have to tell it what Arduino pin it will be connected to - hence RECV_PIN.
Similarly "results" is a variable of type "decode_results" which may also be defined in the library.
"irrecv.enableIRIn" is a call to a function (also called a method) in the IRrecv class called "enableIRIn" which probably enables the IR input to be detected.
With "if (irrecv.decode(&results))" the "irrecv.decode(&results)" is another call to a function called "decode" which needs to be given the address of a variable (that's what the "&" does) called "results" - presumably because the function stores the answer into it. It is common for calls to C/C++ functions to return TRUE if they succeed and the IF part of the statement is responding to that.
"switch results.value" throws a little more light on the nature of the variable "results". It seems to be a STRUCT which is a C++ concept that allows you to treat several different pieces of data as a unit. In this case one of those pieces of data is called "value". So SWITCH is causing different choices to be made depending on what is contained in results.value. SWITCH will be followed by a number of CASE statements.
Hopefully you will have guessed by now that "irrecv.resume();" is a call to another function in the IRrecv library.
You will need to read the documentation or examples for the library to find explanations for what the functions do and what other functions are available to be used.