First, choose an app for your product configurator. If you know how to code stuff with liquid templating language, you can get around using an app, but apps make building a custom product configurator much more convenient.
I’ll be using best custom product options for the examples, but other apps have most of the same features.