How can I collect data through a drupal form? I want to allow users to contribute posts to my site. Should I set up a content type that can be created by the public or set up a new user role and get people to sign up first? I want to reduce the friction of adding a post to the absolute minimum.
I'd let users login first to prevent spam. However you could simplify the registration&amp;login process by having users authenticate with OpenID (Google, facebook ect.) Similar as what stackexchange offers. 

This should get you started: https://drupal.org/project/openid_connect