Your understanding is correct: the only difference is that ifilter returns an iterator, while using filter is like calling:
list(ifilter(...))
You may also be interested in what PEP 289 says about filter and ifilter:
List comprehensions greatly reduced the need for
filter()andmap(). Likewise, generator expressions are expected to minimize the need foritertools.ifilter()anditertools.imap(). […]
Also note that ifilter became filter in Python-3 (hence removed from itertools).