I used to work for an ISP, and it's not too difficult.
1. Apache and an ftp server come with most versions of linux. SSH is also a good idea b/c you don't want people using telnet (It's not secure).
2. The newer apache versions also include ssl, so you can do secure transactions.
3. some sort of security for cgi scripts and Apache, but the Apache.org website covers a lot of those.
4. Sendmail is difficult to set up, but there are easier programs to set up to host mail. The major problem with hosting a mail server is keeping people from sending spam through your server, b/c people really b****h when the get spam through your server.
5. Performace: Apache is pretty good, again, on apache.org you can get tips on how to tweak it and stuff.
6. Legal Issues: You are only bound by what you promise people, as far as server uptime and reliablity and stuff. The privacy issues are a different matter, but usually if you're ethical, you're well within the law on these issues.
I do know that it's pretty expensive to get a co-locate at an isp with a good bandwidth and power backup, etc. I would not think that it would be worth it unless you had several customers all lined up, ready to commit.
If you're a developer, talk to a local isp about some kind of trade deal, you refer everyone to them, and the isp will give your customers a discount. That way, you're getting them good deal and don't have to deal with the overhead of security, server upkeep, backups, power issues, network problems, etc. Managing a network like that is a full time job for several people (I used to work for an isp) email me at mike@celito.net and I can suggest some for you to use if you want, but I would recommend a local one.
MWB As always, I hope that helped!
Disclaimer:
Beware: Studies have shown that research causes cancer in lab rats.