Topics are collections of posts. Let’s use a random topic here on Meta as an example:
That topic has a title, “Don’t warn whisperers”, and ID,
199028 , and contains 5 posts at the time of writing this howto.
Posts are the individual “content” within a topic. This includes the “OP”, or original post, that is created at the same time as the topic.
As a point of note, a topic should always have 1 or more posts, in Discourse technical speak, this is called the posts count
posts_count. If a topic has more than 2 posts (that is
posts_count = 2) but no replies have been made to the topic, then that topic has “small posts”.
Small posts are topic activity notifications, things like
topic archived, etc. See this image for an example: