I am not sure what you mean by "when" you save your file out with compiled modules - it is basically when you have some you want to access in that manner, you save the script out for use later.
The advantage is you create functions you need for your testing or to expand the use of WinRunner. Look into the load, unload and reload functions to see how to get the information into memory. It allows you access the functinoality in the same manner as you do the built in WinRunner functions.
This ability allows you to wrap up repetitive tasks into a single function, then only have to change it in one place if it needs to be, not in every place you perform these actions.
Check out the WinRunner User's Guide. There are sections specific to this topic. Summarizing, use a compiled module for a globally or heavily used function that needs to be done efficiently (ie, fast) across multiple scripts.