TL;DR
A Product Backlog should be primarily based on organization-specific priorities. That means "must" should generally be higher than "should" or "could" items. However, frameworks like Scrum that are built around iteration goals provide latitude to include secondary objectives or stretch goals during iteration planning.
Understanding Backlog Collaboration in Scrum
A Product Backlog is required to be ordered. Anything that's optional or lower-priority should generally be kept below required features/functionality until such work comes into scope for other reasons such as a change in business priorities.
The Product Backlog may contain ancillary data about the agile release plan based on the expected lead time, but this in no way provides a guarantee or permits the Product Owner to define or control the contents of the Sprint Backlog.
The contents and format of the Product Backlog are up to the Product Owner. There's no framework requirement to carry estimates on the Product Backlog, but teams that regularly do Backlog Refinement often store non-binding estimates there to aid in Sprint Planning and other forecasting activities. Likewise, only the Development Team can assign level-of-effort estimates to backlog items or pull work into a given Sprint Backlog.
The Product Owner never assigns work to a Sprint; instead, the Product Owner works with the rest of the Scrum Team to craft a Sprint Goal for each iteration that provides a central coherence for the work that can fit into the current time box. The Development Team then pulls work off the top of the Product Backlog during Sprint Planning, using the Sprint Goal as a filter. The Product Owner and the Development Team can work together to identify "should" and "could" items that relate to the Sprint Goal, and the Product Owner can prioritize such work on the fly during planning events when the team may have additional capacity.
Always remember that only the Product Owner can prioritize the Product Backlog, and only Development Team can pull work into a Sprint Backlog. While there is a formal separation of responsibility for the two backlogs, that doesn't mean the Product Owner and Development Team can't (or shouldn't) collaborate. The entire Scrum Team should be actively collaborating throughout the project life cycle, rather than tossing stuff over the wall to one another at Sprint boundaries.