Anyone who knows better, please correct me if I'm wrong, but here's my understanding: "ulo" is very casual and colloquial, as others have said, so it roughly equates to "bloke" or "guy", "dude," "chick," that kind of thing. "Homo" and "persono" both are a little more formal, and can be used in a less casual setting.
Personally, I distinguish these formal terms as: "homoj" are human beings, no matter what (if any) qualities are assigned to them; "personoj" are people who are sentient but might not be human. This could be used in a fantasy or sci-fi setting, as in aliens or fairies or dragons, or just by someone with a "cats are people, too" picture frame hanging in their hall.
Given the lack of non-human people here on Earth, "homo" seems to be the much more common formal term for "person." I've seen it used many times, and very rarely have I see "persono" used.
Again, if there are more experienced Esperantists who have a correct or better explanation, please reply, I'd love to know!
Is ulo typically understood to be gender neutral? Or male? It seems like it would make more sense if it were understood as male since in order to make it male we would have to use virulo, but that could mean you-roll (cannibal sushi? trashcan prank?). Or does it just depend who you are talking to?
http://bertilow.com/pmeg/vortfarado/afiksoj/sufiksoj/ul.html#i-s2s says (mi provas kiel eble plej lerte traduki anglen) "According to the above explanations the suffix -ul has the meaning "person". That is, a gender-neutral meaning. A person [so denoted by -ul] can be either a woman or man. But in practical language use the matter is not so clear. In plurals, -ul is most often neutral, saĝuloj = "wise people, whether male or female", junulargastejo = "guest-place for boys and girls both", "malrapiduloj" = "slow people". But in the singular it happens often that in practice -ul means "male person"."
Of course, what has been the case in practice in observed uses of the language in the past, and kiel la ligvo evoluos estontece are potentially different things :)
(It should be noted that the phenomenon of words breaking up in more than one way into affixes a la the vir-ul-o = vi-rul-o that you observe is not at all unheard of; it's just fodder for good-ol'-fashioned punning as in any other language)
Well, ulo used to refer exclusively to males, but now it depends on who's using it whether they mean a male specifically or someone of any gender. In fact, Ido, a language based off Esperanto, uses -ulo as a male suffix and counterpart to -ino, likely due to when it was created.
Esperanto, on occasion, uses the affix ino on the odd occasion too. La inon Baldaŭ venos could mean "A chick (or other female specific word of the interpreter's choice) will be coming soon."
and anyplace where one can insert ulo can also use ino if suitable.
It is, however, not in very common usage.
"Homo" is the proper term for "human being", while "ulo" is a more colloquial term. It is comparable with "guy/dude/bloke/fellow" and "gal/chick/broad", but it's gender neutral.
According to the dictionary, ulo is "a person whose properties are not mentioned" (like e.g. "a fellow on the street gave me his umbrella") and it says ulo is often used a little negatively. Similar to English by the way. (e.g. "some guy just cut me off!") Although it doesn't have to be negative, of course.