Adders and muxes are some of the basic building blocks of digital design. The easiest way to explain is with the saying my professor used to say: "With digital logic, you can perform any mathematical operation." Eventually, this will boil down to AND's and OR's, or on a slightly higher level, muxes and adders!
I think a solid way to understand is to take a look at the CPU, the central processing unit.
The CPU is made up of a few parts. It can (basically) be boiled down into 5ish. A Control Unit decodes an instruction. Then, it sends out the necessary signals to the arithmetic logic unit (ALU), a register array, a program memory access unit (PMA), and a data memory access unit (PMA).
Let's say you have a register R1, and you want to add an integer N to it. This could be for memory or for a data calculation, or the counter in a FOR loop. You would tell the Control Unit that you want to add an integer N to your register with a specific control word. Then, it would send a signal to access the register A in your register array. Ah, but your register array can have many registers! How can you choose one of many? You can use a multiplexer! So now we have used a multiplexer to access the register R1, and the value of R1 has been sent to the ALU. We've also sent the ALU the integer N somehow; for simplicity, let's say that N was stored in another register R2. Now we have two inputs to use in our ALU, but how can we choose the operation? The ALU can add, subtract, negate, AND, OR, or do any of many logic functions. Again, we can use multiplexers and decoders to choose the operation. Then, to actually do the computation, we can use adders and half adders.
All computer programs compile down to lines of code that are decoded by the CPU. Since the CPU is a logic device, it made up of adders, muxes, negates, shifters, etc. Without these basic building blocks, we would not be able to do much!