Does that mean we must select 'Optimize and Link' option every time we compile files ?
Is there any drawback of doing this ?
It helps usually. The most basic portion of that means it in-lines the function - this means it's as if wherever you call it you rather duplicated the code. It tends to make it run faster as there's no new scope created for a new defun and the arguments aren’t passed as new copies to the duplicated code. It's not the only optimization happening, but does show one benefit which could make for much faster running code.
Note however that this can adversely affect your program. E.g. normal lambda's generate some errors when optimized in this way - you should surround lambda's with function to avoid most of these.
Also (I'm not sure about this though) it might be a bit dangerous with the in-lining optimizer, what happens if you re-use one of the parameters inside the defun as if it's a local variable? With the normal defun's scope it won't affect the value outside that defun, but it's unclear what happens due to in-lining (does the scope merge with the calling scope?). I tend to "try" avoid such situations for this reason, perhaps it's not needed - but I'd rather be safe.
Therefore you could say, normal compiling makes code run faster. Optimized + Linked makes it run even faster, but with some possible problems.