We'll start with .jar files (framework files). When you boot a phone, the phone dalvik virtual machine reads each .jar and pulls out certain data, and puts it in /data, to make start up easier and faster. On odex'd roms (typically what you get from stock), this data is already in a file outside the jar, with a .odex extension on the end. This makes for faster start up that first time. Each file that has been pre-odex'd has been linked to each other thou via hash sum, so trying to edits to it will lock down a system on boot. This makes it hard to theme your system with any interface tweaks. De-odexing a system means sticking that .odex file back inside the .jar . It's not as simple as just moving the file, but same premis (you can google for more info). This means that the files are no longer linked to each other and you can edit them (at the small cost of some initial start up time).
Hopefully this answers your question.