Ah! It does matter! .proto isn't the protocol buffer file holding the data, it's a template.
If you want to open up ANY .pb file, grab one from here. No api, login etc needed.
----------
It took me a long time to wrap my head around this process too, will try to lay it out..
1. .proto files are human-written templates that define how we're going to structure our data.
2. from that, in python, a "xyz_pb2.py" library / module is created which acts like a machine-made template. There's no data in there. It's just instructing how to work with the data. You can say it's the "compiled" version of the template.
3. When we write "from google.transit import gtfs_realtime_pb2" at the top, we're including the GTFS-RT's protocol buffer template. At this point, the template we need, to read and write GTFS-RT feeds, is already loaded. So no need to bother with .proto etc now.
4. So our program is now using the GTFS-RT protocol buffer template to read and write .pb files, which hold the data.
I got to learn this stuff from outside the GTFS-RT world. This article explaining protocol buffers helped:
Regards,
Nikhil VJ
Pune, India