Does direct GPIO communication between 2 microcontrollers requires pull up/down
The configuration I would use:

SENDER:
GPIO Mode = output push-pull
Pull Up/Down = no PU/PD

RECEIVER:
GPIO Mode = input mode
Pull Up/Down = opposite of logic high signal




And here is why:

The output as push-pull has generally the benefit, that it will drive the line in either way and ensure a good signal integrity. So even if your line gets a bit longer and the capacity might be a bit higher you usually don't suffer too much from it.

On the input side, you have to take into account (in my opinion) that you don't know if the sender will actually be there or if the line might be broken or not. So you should provide a way to ensure a stable logic level on that input even if the sender is absent or the line is broken. For that you use the pull up or pull down resistors. Depending on your physical layer specification (read: is your signal active low or active high) I would activate the pull resistor to the inactive signal level.

If your signal is active low, use a pull up, if it is active high, use a pull down.

To be more precise, the pull resistor should pull the signal to the safe state. Consider a write protect pin for example. Pull it in the direction that the write protection is enabled.

For this purpose the internal pull resistors are usually fine, just make sure to set them before you do any handling of the pin level.



An open drain output has only the ability to pull a line low, but it cannot drive the line high. This is commonly used on lines where multiple chips might want to signal something on the same line. Each chip can pull the line low, but no chip is driving it high, so no short circuit will happen.

Something has to drive the line high however and that is a pull up resistor. Pull up and Pull down are named like this because they will "pull" the voltage level of a line in the respective direction (high -> supply voltage, low -> ground, usually). The value of the resistor is chosen in such a way that no damaging current will flow in any device, no excessive current is flowing while the line is driven in the other direction and so that the line will return to the pulled level in the correct amount of time (depends on the capacity of the line).