There is no single "correct" way of writing and structuring use cases. First and foremost, your approach has to work for you and the people you work with.
I'd like to suggest that "login" is often not a 'real' user goal, thus I'd see this as below the user goal level. From my perspective, "buy products" seems to be a reasonable user goal for a Customer in your example. "Browse products" might not always be a primary user goal, e.g. when you're browsing through a catalog in order to buy something. On the other hand, the Customer might just want to obtain information without having the intent to buy immediately.
Alistair Cockburn's "Writing Effective Use Cases" is certainly a great source on use case writing. I also suggest looking at "Lean Architecture for Agile Software Development" by James Coplien and Getrud Bjornvig: this book discusses the idea of a "habit", i.e. a sequence of tasks that comes up in the context of different use cases but that is in itself not a fully fledged use case. (Search "use cases habits" and you'll find a relevant section of the book. Then go buy and read the book -- it's great!)
Decomposing use cases into ever smaller use cases is a hotly debated topic with many people being fairly reluctant to do so. Among other issues, the administrative overhead of keeping track of use cases dependencies and keeping related use cases in synch can be very high. Also, fine-grained, highly decomposed use cases are often difficult to work with for non-IT people (and, truth be told, also for IT folks).