Python Combinatory Algorithm - A Binomial Coefficient application with n mutable and k fixed to 2
If you just want the length of the list, your code can be reduced to one line:
result = len(to_do) * (len(to_do) - 1)

Also, you're comments are, at the very least, excessive. You should really only use comments to explain a design choice or a complicated equation/algorithm. Comments like #if the condition is satisfied just clutters your code.
As explained in a comment, actual computations need to be made. This can be done using itertools.permutations.
import itertools
from typing import List

def func(nums: List[int]) -&gt; List[int]:

    return list(set(
        x * y for x, y in itertools.permutations(nums, 2)
    ))

While this doesn't avoid the extra computations, it's a short and sweet solution. And below is how you would use it:
to_do = [1, 2, 3, 4, 5]
func(to_do)