Whether the methods on streams or readers / writers are synchronized or not is not very interesting. Usually, you do not read or write to one stream from multiple threads at the same time, so there is normally no need for the methods to be synchronized. If you really want to know which methods are synchronized, then you can look that up in the API documentation.
Rob already said what the difference is between readers / writers and input / output streams:
Readers and Writers are for reading and writing text. Streams are for reading and writing binary data.
Readers and Writers convert the data that they read from or write to an underlying stream to and from text (characters) and perform conversions according to the character encoding that you are using (for example ASCII, UTF-8, ISO-8859-1 etc.).