Concatenation with shift operator on concatenated array
This syntax is described in the IEEE Std 1800-2017, section 11.4.14 Streaming operators (pack/unpack).  The general form is:
{ stream_operator [ slice_size ] stream_concatenation }

In your code:

stream_operator is &lt;&lt;
slice_size is not specified
stream_concatenation is the expression {data[7:0]}

In section 11.4.14.2 Re-ordering of the generic stream,

The slice_size determines the size of each block, measured in bits. If
a slice_size is not specified, the default is 1.

In your case, the size is 1.  There is an example which is similar to your case:
{ &lt;&lt; { 8'b0011_0101 }} // generates stream 'b1010_1100 (bit reverse)

Thus, your code does a bit reverse.