1) The Arduino has built-in ADC inputs (Eight 10-bit channels on the 328P). You could double them up to improve the resolution, otherwise I'd just get a 16-bit ADC from TI and solder it onto a SOIC breakout board yourself. It may be a good idea to run the input through a high performance instrumentation OP-amp first as well.
2) Normal ADCs measure voltage. To measure current what you'll need to do is use a shunt resistor (or series resistor). If you want to "cheat" you could use something like an
ACS712 current sensor, which you place in-line with what you want to measure and it outputs a voltage to measure (e.g., 1mV = 1mA).
3) You'll have to rectify the voltage to measure it with an ADC. You'll also need to attenuate the voltage down to what the ADC can handle as well. What you want to do is rectify the voltage and then run it through a voltage divider. (This is how multimeter's work, when you change ranges you're changing the voltage dividers the input goes through.)
Can you explain what you end goal is? Why can't you use a multimeter? Getting clean, noise free, precise voltage measurements at 16-bits is going to be really hard without designing a custom PCB (with separate analog and digital supplies and proper ground planes). You can
buy a $30 multimeter on Amazon that has an RS-232 output, which you could bring into the microcontroller a hell of a lot easier than you're going to build this circuit.