The best initial clients are through people you already know. I would put the word out on social media that you are working on contract and specify your skill sets, and you are likely to find someone who knows someone who is looking for web design work.

Personally, I used to like to quote fixed prices for my projects, based on what I knew the approximate time it would take to complete the project. This gives certainty to your clients about how much they will pay, and also incentives you to deliver the project on time and without too many headaches for the client (thus leading to unpaid time bugfixing).

If you don't have any contacts who know people in tech, then another way to go is to start attending hackathons, or to do contract work on freelancer websites. These two options are less desirable, as you will tend to find customers who are much more picky and more price sensitive, but it is a way to get started absent a network.

What you should charge is a tough question. I think it really depends on what you are building. Mobile apps tend to fetch more than web apps. I'd shoot for $50-100 per hour to start out, and you can perhaps bump that up the better you get (especially if you are doing fixed price work and are conservative about how you quote jobs).

For invoicing, I would say Microsoft Word usually suffices. Unless you have an insane number of clients, it's pretty easy to keep track of your invoices by emailing PDFs and cashing the associated checks. For contracts, there are a number of options online for doing freelancing. I would download about 4-5 of them, read them thoroughly, and pick and choose the best options. If you want, once you have put together your ideal contract, you can hire a lawyer for an hour to review (but probably not necessary, assuming you are doing business through a corporation that doesn't have substantial assets).

On the contract front, one thing to note that is important. DO NOT, I repeat, DO NOT, sign non-compete agreements. Everyone and their mom is going to want you to sign an agreement that says you will not compete with the product you build for them for 1-2 years (or perhaps more). I would highly recommend against this. By the time you get done working for 5-6 clients, you are arguably going to be non-competed out of pretty much every segment of the software industry in one way or another. When someone asks for this (unless they are offering you a yacht and $20 million dollars) just say no. On the other hand, I tend to view non-disclosure agreements as being pretty harmless (however, read these thoroughly. sometimes people sneak non-compete language into agreements titled "nondisclosure").

As far as legal issues, the big thing is to have an LLC. You should also have a bank account for your LLC. All transactions concerning your business go through the business bank account. Your business bank account should not be particularly well funded (i.e. pay yourself often from your business bank account). All agreements are signed by you, the "Member" of the LLC, not by you individually. Read up on "piercing the corporate veil", and don't do any of the things that might lead to this. If you do this, generally the only recourse someone will have will be against your company, and this allows you to avoid personal liability for issues that arise in the business, assuming you are not grossly negligent in some way.