Un coche obviamente te da mucha más flexibilidad. Y aunque el transporte público local en Brasil es bastante decente, si no impresionante, no es muy útil para los usuarios que no hablan portugués. De hecho, en mi experiencia, la forma más común para los brasileños de orientarse usando el transporte público local en una ciudad con la que no están familiarizados es preguntando a los demás. Buena suerte si no hablas el idioma. Por otro lado, las grandes ciudades brasileñas tienden a sufrir de carreteras muy transitadas, lo cual puede que no sea de tu agrado.
Un buen lugar para buscar rutas de autobús es Plataforma10. La interfaz de este sitio está disponible en inglés. Sin embargo, en mi experiencia, para rutas algo menos comunes, Plataforma10 no siempre devuelve resultados.
Rome2Rio, como señaló @joernan, también es un buen lugar para buscar conexiones. Pero... he descubierto que, al menos para conexiones en Sudamérica, no siempre tienen la información más actualizada. (Por ejemplo, afirman que Util viaja entre Río y Petrópolis, pero el sitio web de Util no respalda esa afirmación.)
Sin embargo, a través de Rome2Rio, Guiche sí viaja entre los dos y puede que sea posible comprar boletos en línea. Su sitio está en portugués, pero el proceso de reserva es prácticamente el mismo en cualquier idioma. Sin embargo, ten en cuenta que algunas compañías de autobuses brasileñas solo venden boletos en línea a usuarios que tengan un CPF, que es algo similar a un número de seguro social brasileño. Siempre puedes comprar un boleto en persona sin un CPF. Y, la estación de autobuses desde la que sale tu conexión deseada siempre (bueno, casi siempre) tendrá una oficina de la empresa con la que deseas viajar.
Luego, está BuscaOnibus, que también tiene una interfaz en inglés. Al menos en este caso (Río a Petrópolis es lo que comprobé), parecen ser exhaustivos.