Here's some of my thoughts:
a) ORM's exist to simplify and reduce the workload on the developer. In many well-designed relational models, the database can be accessed via code that is highly repetitive (just change a table name, column names, but the behavior is very similar). An ORM generates code that the developer can use right away, and tweak as necessary. The developer does not need to write SQL - that is the job of the ORM now. It also refreshes the generated code by automatically adjusting to database schema changes.
b) I don't know. It really depends on your requirements and dependencies. How involved do you want your ORM to be? How important is performance? How developer-friendly do you want the code to be? Entity Framework tends to generate a more comprehensive class library as the data-access layer, while giving you visual tools to tweak the generated code. Linq to SQL tends to be easier to sprinkle throughout different methods. That's just one example.