The usual solution is to provide users with a choice. Default to showing a simplified field or set of fields that suit the common case for that locale. And provide an "advanced mode" with more fields and options to handle unusual cases.
Well you could do that, but only if you must collect such information for governmental purposes, otherwise I would stick with just the single text box and allow them to put in whatever name they wanted.
I would especially do that for any sort of web startup for both simplicity of the interface and ease of implementation.
It's not just for government purposes. If your hypothetical web startup has to integrate with any third-party systems (like anything in healthcare or financial services in the US) then you need the name broken into parts.
Well I would consider that to be for government (mandated) purposes, since the service you're contacting with has a government mandated schema for the name it must use, and hence you must also use.
Of course you can always have different fields for billing information.