A clarification: LOAD"PROGRAM",8,1 means that the program will be loaded from device 8 (typically a disk drive) and to the memory location it was saved from. When it comes to machine code modules, it usually is important that the code is loaded back to the same position it was saved from, as the code contains absolute memory references. The same is of course true if you load character sets or other graphics.
When it comes to Basic programs, these can be relocated most of the time. Usually on a Commodore 64, Basic starts at the position all the time, so you wouldn't have to bother. On e.g. a VIC-20, the start of Basic differs depending on how much memory expansion you have inserted. If you saved a Basic program on an unexpanded machine and load it back ,8,1 the following happens:
1. On an unexpanded machine: nothing. It loads back to its intended position.
2. With +3K expansion: it loads to $1001, while Basic starts already at $0401, so you won't see any visual signs the program loaded at all.
3. With +8K expansion: it loads to $1001, which happens to be the position of the video matrix in this configuration. The screen will be full of garbage.
If you loaded the same program ,8 (or ,8,0) it will relocate to the current beginning of Basic memory. Programs written in Basic will automatically relink upon loading, so most of them will work, except for programs with a lot of PEEK and POKE statements that rely on a particular memory layout. Programs written in machine code, graphics etc will mostly turn into garbage, since they will be relocated to a different address than intended.
Some crunchers/packers/emulators or whatever it is, saves Basic programs to address $0800 (C64), $1000 (VIC-20) etc, while it usually should be $8081, $1001 and so on. It means that if you load the program with ,8 and let the computer relocate it, everything will be offset by one byte and tends to screw up the computer. In those cases, you must load ,8,1 to get it to work.
If you load a long program, and when you list it, you only see a SYS statement, it is because the rest is machine code. I'm quite sure it doesn't have anything to do with relocation or load errors. As stated before, the machine code can be disassembled to some degree, but the question is what one wants to obtain from listing it.