HPなどの変数はどこで持つべきなのでしょうか?
変数は「その値は誰の所有物か」ということを意識して設定すべきです。
例えば"HP"や"攻撃力"といった要素は、キャラクタ毎に保有しているケースが多いですね。
つまり、プレイヤー(キャラクタ)で変数を定義するのが最適です。
Actor ブループリントはブラックボードの変数を参照するべきなのでしょうか?
これは少し悩ましいですが、Actorというのを「AIで制御される対象」として仮定した時、
Actorからはあまり参照しない方が良いと思います。
ブラックボードはビヘイビアツリーやタスクなどの間で変数を共有できるのが特徴で、Actorはタスクからの指示によって挙動を変更します。このビヘイビアツリーを用いたAIシステムの利点として、Actorはタスクからの一方的な指示を受けてから動作を変えるだけで良く、AIの挙動判定の部分を意識する必要が無いです。
Actor側からブラックボードの値を参照してしまうのは、本来意識する必要のないAIの挙動判定に関与することになり複雑度が増してしまうので、個人的にはお勧めしません。
これらを踏まえて、変数は管理者が自身で正しく管理し、変更がある場合はその管理者に対して変更を通知するような、オブジェクト指向に沿った考え方で実装すべきです。