From my experience: Never do work involving money for family members that you have to spend holidays with or friends that you want to keep. One of the parties involved will always feel like the other party is either charging too much or not paying enough and that they did the other party a favor. When the deadline comes up, they are usually the least understanding, and they usually are ass holes during the beta test because if you have a bug--which you will--they will not understand. It is always a mess.
I used to be idealistic and think that everyone else just needed better people skills, but nope, that's just the way it is. People who do not understand the software development process will ALWAYS freak out when something doesn't meet their expectation the first moment they see it. This is true in business with project managers as much as it is with family members. The problem is, you have to maintain a relationship with family and friends, and things are never strictly business.
That said, if the project is going to increase your stress levels and you don't need the money then why take it? Especially if you already have a software development job that you want to excel in, I would say that you should dedicate as much of your working effort to being excellent in your day job because that is where you will ultimately be rewarded for quality work.
If you do need the money, and you are ok with the potential loss of a family friend, then take the job. The worst thing that could happen--other than the stuff I mentioned before-- is that you learn what you are and aren't good at, or you learn that you bit off more than you can chew causing the project to be a bad headache due to your inexperience. I have done that twice with my current job--fortunately I have very understanding employers. Though it was misery while I was feeling dead in the water, I emerged a much better programmer with a much wider skill set than before.
There is no calculus for determining which jobs to let go and to keep, only experience and your personality. You just need to decide what you value and pursue it. Things to consider:
Is this a project that I will enjoy working on?
Is the team a team that I will enjoy working with?
What sort of payment will they be offering?
If none, then what professional development will I be receiving?
Do they offer any sort of shared risk (i.e. stock options, percentage of profits)? This is a big persuader for me.
Anyways, these are just principles to use in your decision making. It all depends on what you value. For example, I value intellectual challenges and time with my family so I usually place a high priority on what the project is and the skills I will learn in doing so. However, I also make sure to state up front that I am only working 2 or 3 nights a week so that I can spend time with my wife and children since I already work all day. I adjust the deadline to meet this demand. If they don't like that, then I don't take the job.
Whatever you do, make sure you state clearly what you will and will not do, and make sure they clearly state their expectations before you take the job. The worst thing that can happen is for the customer to have unstated expectations and for you to have underestimated those expectations.
P.S. I really wish I had read this article earlier in my career. It applies to my last paragraph. http://www.joelonsoftware.com/articles/fog0000000356.html