Hi, I understand your concern, but it's difficult for me to say one way or the other how your data should be structured without understanding the requirements of what you want to accomplish. There's nothing in WordPress or Toolset that absolutely requires a User to have a first or last name, or that the values are stored separately in custom fields, or that a Member post that acts as a proxy for Users includes the first and/or last name in the post title. It all depends on what you want to do with this data later. If there is ever a case where you need the first and last names stored separately, for example, a sortable table of Members with separate columns for first and last names, then you must store those values separately in individual fields.
should I include first and last name on the user form?
It's really up to you, because the First Name and Last Name criteria are not required by WordPress to create or edit a User account. There may be situations where 3rd-party systems use the First and Last name fields from a User account for some reason, but since they are not required by WordPress those 3rd-party systems probably have fallbacks in place like the username or nickname fields instead. Will you need this data in the User profile in the future? I cannot predict this. If you have it in the Member account, then you will be able to access that information if necessary. I would keep in mind that if you do decide to use these fields later, getting that data later is more difficult than requiring it up front when Users are created.
If I do, then should I include it again on the post-form
It's up to you...do you want the User to be able to potentially modify the first and last name values between the time they create the User account and the time they generate their Member post? They would be different from the User account values, which could lead to some confusion when examining data in the backend of the site. You can include the input fields in the post Form and pre-fill the input fields with data from the User profile automatically using shortcodes. That would be convenient, and would help speed up the Form submission process. You could optionally set those input fields to be read-only, preventing modification. So it just depends on your preference and the requirements for the data later. Regardless of whether or not you include the inputs in the Member Form, and regardless of whether or not the inputs are editable, I think it is definitely important to store first and last name fields in the Member post. This will allow your site Users to search for users by first and/or last name when performing text searches in Views.
It also might be important for your Users to be able to sort and filter a list of Members. If you don't store first and last name separately, it will not be possible to create a list of Members in a sortable table with separate columns for first and last name. So storing the values separately is definitely important in that case.
And I can't quite figure out how to have the First and Last Name (or company name) be the title of the post. or does it need to be?
Again, up to you whether or not it needs to be. I think it's a good idea if for no other reason than making post management easier in the backend of wp-admin. The post title is displayed in the list of Member posts at wp-admin > Members > All Members, and whenever working with posts in wp-admin, so it would be intuitive to use the first and last name values here, or the unique username, or some combination depending on what you want to do with the data later. Generally speaking, post titles are an important part of SEO and search, so you should consider the impact of post title carefully when evaluating the components of a good post title.
Let's assume you do decide to include First Name and Last Name in the User Form, and you make both fields required. Then, you want to set the Member post title automatically to be the User's First Name, plus a space, plus the User's Last Name. In the Member Form, you can automate the value of the post title field using the User name fields with Views shortcodes. In expert mode, you would edit the post title shortcode like this:
[cred_field field='post_title' class='form-control' output='bootstrap' value='[wpv-user field="user_firstname"] [wpv-user field="user_lastname"]']
In the drag-and-drop Form builder (not expert mode), you would include the two Views shortcodes in the default value of the Post Title field block:
[wpv-user field="user_firstname"] [wpv-user field="user_lastname"]
Screenshot attached here.