Build all re-compiles all the blocks of code, build only compiles the block that have changed, on-line program change is a small change where it only downloads the bit of code that changes.
If you do build all, it compiles the whole program so as there are on the fly variables (tags with no actual physical addresses) these are allocated at compile time, if you do a full compile and not download it then when you try to go on-line it warns you the program may be different as the time stamp since last compile is different. The same goes for build only, on-line change will only allow small changes at a time usually 500 steps (note some actual functions can take up many steps), it compiles it & downloads the changes by shifting the program to fit, if too large it will drop out and not download.
You must remember to save the program to disk after an on-line change.
Depending on the IDE you use i.e. GXDeveloper or GXWorks, in GXWorks if it is a structured project then unless you download the symbolic file you cannot upload to the PC as it looses the structure it can only upload as a GXDeveloper ladder file without comments.