10.1 Manual ignoring
Irssi's ignoring options should be enough for everyone :)
/IGNORE [-regexp | -word] [-pattern <pattern>] [-replies] [-except]
[-channels <channel>] <mask> <levels> <^levels>
-regexp: <pattern> is a regular expression
-word: <pattern> must match to full words
-pattern: <pattern> must match to the message's text
-replies: Ignore replies to nick in channels. For example
"/IGNORE -replies *!*@*.fi PUBLIC" ignores everyone
from Finland, but also anyone sending message
"tofinnishnick: blahblah".
-except: *DON'T* ignore
-channels: Ignore only in channels
<mask>: Either a nick mask or list of channels
<levels>: List of levels to ignore
<^levels>: List of levels to NOT ignore
(/ignore -except nick notices = /ignore nick ^notices)
/UNIGNORE <ref#> | <mask>
/IGNORE without any arguments displays list of ignores.
The best match always wins, so you can have:
/IGNORE * CTCPS
/IGNORE -except *!*@host.org CTCPS
There is no such feature in "IRC in general"; IRC is just a protocol for exchanging messages and does not have logging of any kind. So all that depends on the specific client.
In irssi, though, you can do /lastlog user-a to search for that word.
If you want regexp search, there's /last -regexp too.
This depends on the IRC server. Normally, the WHOIS query would be processed by the server you are on. But on IRC, servers only know idle time and away status for directly connected users. (This is to avoid a lot of unnecessary traffic between servers.)
To see idle time, put the nickname twice, like this:
/whois foo foo
This is aliased to /WII by default:
/wii foo
It is also in the builtin help:
/help whois
This will cause the query to be forwarded to the target user's server, which knows the idle time.
Note that on some networks, cross-server WHOIS queries can be heavily throttled (example: freenode).
Best Answer
/ignore <nick> should do it for one person, but there are many more options in case you want to match more people.
From the irssi manual: