Detailed optimal column order with large text and bytea
Does that mean that columns should be ordered from most space occupation to least?


No, not necessarily. You can play "column tetris" to minimize padding and thereby save some space. The rule of thumb I gave and you quoted is one simple strategy for basic types that require alignment.

As I mentioned in the quoted answer, you can test the actual storage size (excluding item identifier) with pg_column_size() on the whole row.

text and related varchar and char types do not require padding, so there is nothing to gain. The same is true for your bytea columns.

Concerning storage size for:


  bytea columns that always have constant 16-byte, 32-byte, or 64-byte lengths


The manual page on bytea tells us : 


Storage Size
1 or 4 bytes plus the actual binary string



That means, the actual space required for a bytea column of 16-byte, 32-byte, or 64-byte
length is 17 or 20 byte, 33 or 36 byte etc. respectively.

As demonstrated in this SQL Fiddle, a bytea variable always has an overhead of 4 bytes. When stored in a column, however, it starts out with just 1 byte of overhead and switches to 4 bytes for values of 127 bytes length or more.
24 bytes of overhead are added for the row type.
Another 4 bytes are needed for the item identifier per tuple in the data page. Details in this related answer:


Configuring PostgreSQL for read performance


As for alignment requirements of bytea, per documentation:


  Values with single-byte headers aren't aligned on any particular boundary, either.


I would suggest you read that whole chapter - probably a couple of times, it's a tough read.