Используется примерно в этих случаях:
lst1 = [1,2,3]
lst2 = [1,2,3]
lst3 = lst1
print(lst1 == lst3) #True
print(lst1 == lst2) #True
print(lst1 is lst3) #True
print(lst1 is lst2) #False !!!
Все потому, что lst1 и lst3 ссылаются на один объект и если мы его изменим (например, добавим новое значение через lst3, то и lst1 тоже изменится). Таким образом, оператор "==" проверяет равенство значений, а "is" проверяет, ссылаются ли переменные на один и тот же объект.