It lights the breadboard LED of Arduino two, but the TX LED of Arduino one doesn't flash every 1000ms as I believe it should.
The LED on the Arduino is controlled by the USB-to-Serial chip, not the ATMega328 chip. So, unless you are sending data via the USB cable, the TX light should not be expected to flash.
Also,should I alter the code of Arduino one to send Serial.write(255) in that case so that it sends the number as a byte?
That's one way to address the issue.
I know this will mean that serial input through the serial monitor won't work correctly still.
You can write code on the receiver that accepts strings, as long as there is some kind of marker that says "Hey, this is the end of the packet". You can have the sender continue to send strings, too, as long as you add that same marker.
The Serial Monitor is capable of appending a carriage return and line feed to each string sent. The Serial.println() method does the same thing.
You simply read any serial data that is waiting to be read, and store it in an array, followed by a NULL. When the "Hey, this is the end of the packet" marker arrives. convert the value in the array to a number (atoi()), then reset the index into the array, and stuff a NULL in the first position of the array.