The correct way to include JavaScript and CSS in my WordPress Themes

Pretty straightforward answer is both are the correct. In first method you are breaking down the process in two steps. That is needed in case you want to register some scripts but want to load them conditionally at some later time. For example you may want to load some script only when some second script requires this first script. In this case you can simply register your first script and while enqueuing the second script you can specify the handle of your first script as a dependency.

More clear way of explaining this is think jquery. WordPress registers it by default for you. If you want to use jquery in your site you can either simply enqueue it or enqueue another script which has dependency on jQuery.

If you straight away want to use your scripts then the other method is quite short and clean.