Can I create custom registration and/or user profile fields? Some required, some not?
Absolutely. In s2Member, these are referred to as "Custom Registration/Profile Fields".
What are Custom Registration/Profile Fields?
By default, s2Member only collects details from a user that are absolutely required to process a registration and/or transaction; e.g., email address, name, username, password, credit card, billing address, etc. If there are other fields that you'd like to introduce; either as part of the registration process, or as part of the user's profile at your site; Custom Registration/Profile Fields are an easy way to accomplish this. Custom Registration/Profile Fields are compatible with the built-in WordPress registration form, with s2Member Pro-Forms, and even with BuddyPress registration forms. See: WordPress Dashboard → s2Member → General Options → Custom Registration/Profile Fields for more information.
Supported Custom Registration/Profile Field Types
Text entry, multiline text entry, select menus that require a specific option, select menus that allow for multiple options, a single checkbox, multiple checkboxes, and multiple radio buttons. You can configure which Membership Levels they apply to, whether they are required, if they will be shown during checkout or only in a profile, if they should be for internal use only, if they begin a new section in the form, specific field validation patterns, styles, classes, and other HTML attributes of your choosing.
Tip: If you integrate with PayPal Pro, Stripe, or Authorize.Net (i.e., with s2Member Pro-Forms), it is also possible to create custom Pro-Form templates, where you can edit the underlying PHP files and get even more creative in your presentation. For instance, you might decide to build additional fields into your Pro-Form template file, and process those in custom ways.