Plus to what was given above. I'll give you my index suggestion for your specific query:
--Added to show you how you use the SELECT columns in the IX INCLUDE section.
SELECT t1.col1, t1.col2
, t2.colA, t2.colB
FROM t1
LEFT JOIN t2 ON (t1.id = t2.id AND t2.userid = @userid)
WHERE t1.enabled = 1 AND
t1.startDate <= '2021-02-26 19:03:04.437' AND
(t1.counter = -1 OR
t2.counter IS NULL OR
t1.counter > t2.counter)
--Index1:
create index ix_t1 on t1 (enabled, startDate, counter) include (col1, col2, id)
--notice i added column "id" because if it's your PK it helps to add it to the INCLUDES
--Index2:
create index ix_t2 on t2 (counter) include (colA, colB, userid)
-- assuming useid is your PK.
that's my attempt at indexing it. I maybe off just a little bit so please test it and adjust as needed.
Also I would highly recommend rewriting that query and substitute the OR with UNION. These queries with OR's have a tendency to go row-by-row and are very slow on large tables.
The UNION version should look something like this. (again please test it I may be off just a bit):
--1st OR
SELECT t1.col1, t1.col2
, t2.colA, t2.colB
FROM t1
LEFT JOIN t2 ON (t1.id = t2.id AND t2.userid = @userid)
WHERE t1.enabled = 1 AND
t1.startDate <= ??? AND
t1.counter = -1
UNION--2ND OR
SELECT t1.col1, t1.col2
, t2.colA, t2.colB
FROM t1
LEFT JOIN t2 ON (t1.id = t2.id AND t2.userid = @userid)
WHERE t1.enabled = 1 AND
t1.startDate <= ??? AND
t2.counter IS NULL OR
UNION --3rd OR
SELECT t1.col1, t1.col2
, t2.colA, t2.colB
FROM t1
LEFT JOIN t2 ON (t1.id = t2.id AND t2.userid = @userid)
WHERE t1.enabled = 1 AND
t1.startDate <= ??? AND
t1.counter > t2.counter
good luck.