Mdadm will solve all your problems.The explanations to your questions would be a lot of writeing and you are best to read the mdadm man pages.
Heres a review with some detailed info on some of its features and options.
There are appropriate links to mdadm page in the review.
I have added extra drives to my raid 5 array.It origionally consisted of 4 35 g raptors and I added 3 more.3 was active one was spare...with the 3 new ones I formatted exactly how I had the others formatted(4 partitions) and then added makeing 2 active for a total of 5 and 1 a spare for a total of 2 spares.It wasnt hard.In my case the extra drives was adding free space.The rebuild utilised the free space without disrupting filesystem.
The easiest way is if you have LVM over your raid setup.This allows for an easy transition of growing a filesystem size.
Heres a good howto on manageing raid and lvm
Also part of the raidtools package,"raidhot[add|remove]" is used to add or remove a disk from a RAID array.
Following are examples of their use:
raidhotremove /dev/sda1 /dev/md0 (hot remove the partition /dev/sda1 from /dev/md0)
raidhotadd /dev/sda1 /dev/md0 (hot add the partition /dev/sda1 to /dev/md0)
Have a look here,it should give a link to what you need.
The above is the last page to software raid how to and is an excellent guide.
Hope this helps.