Bus companies in Peru offer extremely comfortable double-decker buses with nonstop itineraries and VIP service including 180-degree reclinable seats, food, and WiFi. Traveling by bus on these routes is completely safe.
Because of the dramatic changes in altitude between Peru’s coast and highlands, staying at least two days in Arequipa before continuing to Puno or Cusco is a must. At an elevation of 2,300 meters, Arequipa is a good place to acclimatize before heading to Lake Titicaca (3,800 meters) or Cusco (3,300 meters).
Travel options between Arequipa  and Puno —a five-hour drive—include a wide variety of good buses too, with comfy seats on a very good highway with breathtaking views of the Reserva Nacional Salinas y Aguada Blanca.
The travel options between Puno and Cusco include the Andean Explorer, a deluxe train service with excellent views, or a high-quality tourist bus has the advantage of stopping at a string of interesting ruins along the way.
Lake Titicaca  has an increasingly fair share of tourist traps these days. Puno , the gateway city, though quite grimy, is the starting point for most of the off-the-beaten-path adventures, such as kayaking in the lake, arranging homestays on Taquile or Amantaní island, or the lesser-known Anapia and Yuspique islands or in the Península de Capachica.
Traveling by bus on either shore of Lake Titicaca and stopping in towns along the way is another interesting option.
The best time to visit is between March and November, the sunny winter months. Bring lots of warm clothing for the freezing nights and a wide-brimmed hat and sunscreen for the intense sun.