The first four bytes are the version bytes.
The magic bytes are only for networking and they prepend every single message sent over the network. Those are just identifier bytes to identify that the message is for bitcoin.
Actually...
$ head -c 300 blk00000.dat |hexdump -C
00000000 f9 be b4 d9 1d 01 00 00 01 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 3b a3 ed fd |............;...|
00000030 7a 7b 12 b2 7a c7 2c 3e 67 76 8f 61 7f c8 1b c3 |z{..z.,>gv.a....|
00000040 88 8a 51 32 3a 9f b8 aa 4b 1e 5e 4a 29 ab 5f 49 |..Q2:...K.^J)._I|
00000050 ff ff 00 1d 1d ac 2b 7c 01 01 00 00 00 01 00 00 |......+|........|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff |................|
00000080 ff ff 4d 04 ff ff 00 1d 01 04 45 54 68 65 20 54 |..M.......EThe T|
00000090 69 6d 65 73 20 30 33 2f 4a 61 6e 2f 32 30 30 39 |imes 03/Jan/2009|
000000a0 20 43 68 61 6e 63 65 6c 6c 6f 72 20 6f 6e 20 62 | Chancellor on b|
000000b0 72 69 6e 6b 20 6f 66 20 73 65 63 6f 6e 64 20 62 |rink of second b|
000000c0 61 69 6c 6f 75 74 20 66 6f 72 20 62 61 6e 6b 73 |ailout for banks|
000000d0 ff ff ff ff 01 00 f2 05 2a 01 00 00 00 43 41 04 |........*....CA.|
000000e0 67 8a fd b0 fe 55 48 27 19 67 f1 a6 71 30 b7 10 |g....UH'.g..q0..|
000000f0 5c d6 a8 28 e0 39 09 a6 79 62 e0 ea 1f 61 de b6 |\..(.9..yb...a..|
00000100 49 f6 bc 3f 4c ef 38 c4 f3 55 04 e5 1e c1 12 de |I..?L.8..U......|
00000110 5c 38 4d f7 ba 0b 8d 57 8a 4c 70 2b 6b f1 1d 5f |\8M....W.Lp+k.._|
00000120 ac 00 00 00 00 f9 be b4 d9 d7 00 00 |............|
0000012c
Above, you'll see the very first block in the blockchain as well as the first 7 bytes of the second block.
You'll notice that both the magic number:
00000000 f9 be b4 d9 1d 01 00 00 01 00 00 00 00 00 00 00
and the size of the block:
00000000 f9 be b4 d9 1d 01 00 00 01 00 00 00 00 00 00 00
are stored on disk.
To some extent it's up to interpretation as to whether these two values are "part of the block" or just delimiters between blocks with meta information about the following block. Note that neither of these two values have any influence on the portion of the block header that is hashed.
The first part of the block that is actually hashed is the version number:
00000000 f9 be b4 d9 1d 01 00 00 01 00 00 00 00 00 00 00
Obviously if it is a version number, there is scope for a rules description which specifies different block sizes for example 256k, 512k, 1Mb, 2Mb etc.
And how exactly would that work? If the current version doesn't know anything about the future versions, then how will it know what to do when it sees a different block version number? How will it know if the block size is valid or not?