Can you create user interfaces with Python or do you somehow build the tool interface with user data?
Yes you can! Cinema 4D Python API comes with a complete set of classes to deliver full-fledged UI to your scripts or plugins. Please start looking at the examples in the Python Github repository to get an idea on Python API potentials.
If I wanted this camera rig to be setup via a button would I have to create the xpresso interface or would this be done another way?
Depending on the final purposes, skipping the Xpresso graph in favor of a Python-based logic could be preferred if the logic is supposed not to be changed by development-agnostic guys. The initial idea of Xpresso was exactly of providing a convenient and easy-to-use interface to implement programmatic behaviors or models without writing a single line of code.
Also, is it best to learn Python basics before jumping into C4D plugin development? If so what are the best starting points?
Definitively it is! I warmly recommend going through a first dive in Python, get comfortable with those concepts representing its development foundation and then move to the Cinema 4D Python API. This will help you to better understand the examples.
Best, Riccardo