Please unconfuse me!
I will give it a shot.
First needing to use or not to use pull-up or pull-down resistors depends on what kind of device or signal you are wiring to an arduino input pin. If you wiring a electrical signal from another electronic active device then there is no need for resistors as the device will supply a active low and high voltage as per it's function. It's when you are dealing with passive components like switch contacts that the pull-up or pull-down requirements come to play.
A switch is a simple two terminal passive device (it doesn't generate a voltage by itself) and lets say one terminal is wired to +5vdc and the other terminal is wired to a arduino digital input pin. So you press the button and the switch contacts close it routes the +5vdc voltage to the input pin and the pin will read as a HIGH if you perform a digitalRead() statement, and will continue to read a high as long as you keep the switch contacts close. Now what happens when you release the switch contacts, what voltage does the input pin 'see' then? It's undefined as there is no valid voltage level being applied. Many newcomers assume for some reason that with no voltage going to a input pin, it should read a LOW, but that is just not the case. That is called a 'floating input pin' condition and reading the pin in software will result in reading random high and low values depending on internal and external circuit electrical noise, the phase of the moon and how hard you stare at the pin.
To read out as a LOW there has to be a valid 0 vdc signal wired to the pin.
So pull-up and pull-down resistors are one way to wire a 'default' voltage to a input pin when there is no other electrical signal going to the pin. For our above switch example we need a default 0 vdc signal, so we wire a resistor from the pin to ground and we then have an electrical 0 vdc signal for the pin to read out as a valid LOW when the switch is not being pushed. When we do push the switch the +5vdc is now wired to the pin and one side of the resistor, so now some current flows from ground through the other side of the resistor and on to the +5vdc voltage source, but the input pin only sees the +5vdc side of the resistor so it reads as a HIGH.
Now if we wire our switch contact instead of from a +5vdc source but rather to ground and the other side of the switch to a digital input pin we have the opposite state from above, the input pin will read a valid LOW when we press the button, but not a valid HIGH when we release the switch. That is where we need a pull-up resistor, to provide a valid electrical +5vdc signal when the switch contacts are open. Finally the pull-up can be either a real external resistor or we are free to use a software controlled internal pull-up resistor if we wish. As the internal pull-up resistor is free and takes up no board space it's a better solution. Note however there in no internal pull-down resistor option. That means that to use the internal pull-up resistors for switches we have to always wire the other end of the switch to ground. And it means in our software we have to remember that reading a LOW on such a switched input pin means the switch is being pressed on, and reading a HIGH means the switch is not being pressed, it's off condition. In logic talk that is saying the input signal is an 'active low' signal.
That's enough for now, how did I do.