Your original question was about HEX files so this is really a different topic altogether.
You are asking a big question and a small answer can never be comprehensive but I'll give it a try. Please bear in mind that microcontrollers are basically dumb circuits, it's just that there are a lot of them packed into a small space.
The value in the HEX file produced by your compiler/assembler is a binary number, in the case of PICs each will be 12, 14 or 16 bits wide. Within those bits there are fields, some of the bit fields contain instructions, some contain constants. If you look at the data sheet at the start of the instruction set you will see a table which clearly shows how the program words break down into the fields. All these words are stored in the program memory of the PIC so it contains a list of instructions, each at a different memory address.
Also inside the PIC is a program counter which is simply a reloadable sequential counter that increases it's value by 1 every time an instruction is executed. When powered on or the PIC is reset, the program counter is set to a particular value called the reset vector. Most PICs use 0000 as the reset value but some use the last address in memory instead, read up on the 10F series to see why.
The program counter is connected to the program memory so the counter value selects the address where one of the instructions is stored. The bits at that address are then broken down into the fields mentioned earlier. This allows the instruction to be 'decoded' into what it has to do. It then starts a sequence of actions to perform the instruction using nothing more than normal logic gates. The program counter then advances to the next instruction. If the instruction was one that could divert the program flow, such as a call or jump, the destination is loaded into the program counter so it continues picking up instructions from there instead.
Some instructions have the destination field bits set to an internal register, some to an internal RAM or EEPROM address. When an internal register is selected, the result of the instruction is routed by the decoding logic so it gets stored in that register. If the register is a port, the results bits are stored in that port and an electrical connection to the pins of the port register makes the logic state of the bit appear on the pin of the PIC. Each bit of the port register is connected to a corresponding pin on the IC body.
The same happens when reading a pin in to the program. The instruction field contains bits that decode into a read operation, this sets in motion a sequence of operations that transfer the contents of the port register to the W regiater where it can be used in other instructions.
To see the actual way a number is converted to a voltage and vice versa, look at the data sheet for the 74LS245 which works in an almost identical way. The only difference in the case of a PIC is a further register called TRIS (TRI State) in which the bits operate some routing gates to change the direction of the pin from being an electrical output or an electrical input. The TRIS bit as analogous to the direction pin on the 74LS245.
Does that help?
Brian.