companion objectは文法がちょっと独特だけど、Androidならクラス内の定数を定義する場所の定番だし、createInstance()みたいなのを書く場所にもなるので、これを知らないとかは普通無いと思う
単にクラス名.メソッド名()で呼び出せるようにするのならcompanion objectの中にメソッドを書くだけでいい
Randomの使い方(抽象クラス内のcompanion objectがその抽象クラスを継承具象化してクラスメソッドとしてアクセス可能にする)はちょっと特殊だけど、companion objectの仕様が理解できてれば何やってるかわかるはず