Form with Multiple fields in table format
You have multiple questions, so answering the title one: "Form with Multiple fields in table format"

You can do it with custom code by themeing the form and printing the fields in a table (I can elaborate on this if you want).
One thing to note though is that if you want the user to be able to add more rows to the table this solution gets trickier.

If you do want to add more rows or if you don't want to do custom themeing for your form you you can use the field collection module along with the field collection table module.

It works pretty well, however I currently recommend using the latest dev version of the field collection table module as there are some bug fixes in there you will want.

There are also a few patches in the issue queue that you might need depending on your specific needs, so if you run into bugs (I did when I used it) try searching the issue queue for patches.