I can only answer one part of the question and give you a few pointers on the other
"How do I make a link to a page that only people with a password can access?"
Easy... and there's a lot of ways. You can code it with PHP sessions with a mySQL database storing your list of usernames with their passwords (hash the passwords, never store them in plaintext...I suggest using sha1 instead of md5 for security reasons)
Have a login page match the credentials provided against the database and when a successful login is made, set some session variables that allow the user to log in
"How do I attach a payment system to it? What do I need?"
Here's the tricky part... never done this though, but you could try to use zencart (available in your control panel as a one click install) and provide means for users to buy a single product (i.e. subscription)... a successful purchase can now be used to generate a username/password pair to be inserted in your users table.
Need monthly subscriptions? easy... have a cron check every month that each user's subscription hasn't expired. If it has, then mark him/her as disabled so they cannot login again
I hope I made some sense... 3.30am here, heheh