IL2CPP is suppose to convert your code from intermediate language to instructions for your target platform. This would provide some form of security where others are unable to read your source code.
There are some developments since last year, that the instructions can be reversed back to limited IL, to show variable names and function names.
There seems to be a way to prevent the reverse engineering of instructions to the limited IL, which I have yet to try out. Will be interesting if it works, but there is a slight downside to my method.
In terms of protecting your source code, seems better to obfuscate your code and build with IL2CPP.