RS485 current source/sink
THe RS485 line is terminated by 120 Ohm resistors on both ends, so when the transmitter polarizes the differential pair, the current flows and the power is absorbed for the most part on the termination resistors, since the receiver has high impendence inputs.

Obviously the current is provided by the transmitting side power supply, and is always entering the VCC power pin, exiting the transmitter high pin, flowing through the line and the terminating resistors, re-entering the transmitter low pin, and finally exiting form the ground one.

The microcontroller-driver connection is a simple logic gate matter, you must provide the tx, tx enable and rx enable signals, and receive the rx signals, that are all general purpose logic signals.

You don't need diodes between logic inputs and outputs, the Arduino has 5V logic, and logic levels compatible whith those of the line driver and receiver, you surely can connect the inputs and the outputs directly without problem.

Consider that the transmitter and the receiver can have different ground levels, so that the input of the receiver accepts a wide range of voltages, -15V / +15V, allowing approximately a +/- 10 V difference between the two ground connections.

Moreover, I might add that the driver and receiver that you selected are not proper RS485 compliant devices. See the SN65LBC174, that is RS485 compliant, to evaluate the differences.