1 and 2 are pretty much the same task, basically comparing possible hands. I wouldn't over think this one, just try all 8 possible combinations of hands for each person and evaluate them against themselves (not n*n by the way). Worry about a sophisticated algorithm for not trying all possibilities when you've finished, or if you stumble across it - even on a slow machine it's low cost.
One way of doing it is by creating a simple scoring system that could give each type of hand a defined score, such that a straight is one score, and the highest card in the straight adds to it. A flush is one score and the value of the cards then contributes to the score in a way that you can define, for example if you order the cards by number and then create the score of the flush by storing the highest card number, multiply by 13, add the next, multiply by 12, then add the next - the largest number is 240240. It's a really simple system and makes it really easy to score hands and pick the highest one ^_^ If I communicated it badly let me know.
3 doesn't sound like much of a problem, the hands ranking system
doesn't require much logic, except additional descriptions when more detail is needed over a win. An example (taken from the wikipedia article) would be when an AK-high flush beats an ace high flush; but it's a simple special case, just list the highest cards of winning significance.
Read how we learned to cheat at online poker
: details what number generators and shuffling algorithms not to use and why they make cheating very easy
. I would give you more links depending on what exactly you want to know; for example there are tables on poker strategy, etc. Having said that I've just looked on wikipedia and it looks like people have ruined the good pages with 'silly' merges and removal of good sections. I have no idea what happened to my poker links either, I had loads of good relevant links; although I was researching with the intention of creating poker AI.