I'm missing something with protobuffers. Here is some questions that I have that I'm having difficulties answering. 

Is a .proto file enough to have get all the data out of? In the address book example that is on the site they seem to write the data out to a file and consume it out of a file (separate than the .proto file itself). I understand that the proto serializes the object structure and I know that it can serialize a message however I'm having a hard time finding where to put the data and retrieve within one contained .proto file itself. 
If question above is answered as I think it would my assumption is that one team can create the proto file and serialize the data with with java and another team can simply take the file and use python to deserialze it is that correct assumption?
Think of it this way
Client side java code
- proto encoder
- - bytes
======= network =======
- - bytes
- proto decoder
Server side java code
Instead of the network, the bytes may be written to a file by one side and read from it by the other. Whichever. 
In order for proto encoder and proto decoder to do their job, they need to understand the format of the bytes coming in. proto file describes that format.
It's somewhat analogous to sending an image over the network: both sides need to know it's a png file. If one sends png and the other tries to decode jpg, things won't work. The same way as jpg vs png describe the image format, proto files describe the data format.
Please help me understand protocol buffers