on functionality:
from Andreas book "Mastering Bitcoin", Chapter 7:
The primary identifier of a block is its cryptographic hash, a digital
fingerprint, made by hashing the block header twice through the SHA256
algorithm. The resulting 32-byte hash is called the block hash but is
more accurately the block header hash, because only the block header
is used to compute it...
This block hash is a reference to a previous block hash, which connects this block to the previous block in the blockchain.
Is it only there for reference ??
no, it's a pointer to the previous block, so the chain can be established. As in the linked article:
one can not simply create a block "isolated" from the blockchain
and then just "insert" it in the blockchain to win the reward
it's necessary that a previous block is known before a new valid one is created.
using block height?
again from Andreas book:
A block’s block hash always identifies a single block uniquely. A block also always has a specific block height. However, it is not always the case that a specific block height can identify a single block. Rather, two or more blocks might compete for a single position in the blockchain.
Further down, he mentions, that this comes into play when discussing forks.