Update with a sample SQL:
Note: This is not a full solution but the ideas so you can start to search or be aware about them.
Let's split the issue into smaller parts.
they want to create a Task for Contact Owner if email is send to Contact email from Marketing Cloud is Hard Bounced?
Then, in Marketing Cloud, you must first determine which contacts have Hard Bounced status.
-> To view bounce data for emails from your Marketing Cloud account, query the
_Bounce data view where you can find Subscriber Keys with Hard Bounced status by "BounceCategory" column. Reference for this data view
After you get the query result, you would need to find the Contact Owner for these Subscriber Keys (to assign the task to them later). For this, you would need to leverage a Synchronized Data Extension. E.g Synchronized Contact Data Extension is having the relationship for the contact and the contact owner.
-> Use 2nd SQL query to map with the first result query with the synchronized data extension to get the Contact Owner ID. (or you can combine both of them in a SQL query). Reference: Synchronized DE
A sample SQL:
FROM _Bounce AS b
INNER JOIN ENT.[Contact_Salesforce] as c
ON b.SubscriberKey = c._ContactKey
WHERE b.BounceCategory = 'Hard Bounce'
Now you already have the data: subscriber keys (also SF contact IDs) with hard bounced status and the Contact Owner IDs. The last thing you need to do is creating the task for the Contact Owner.
I think Journey Builder maybe helpful here but I am not sure whether it is a correct approach.
Since you are new to MC and familiar with Journey Builder, so using Journey Builder is a good idea. You would want to use the data extension you get from the 2nd query above as the journey data source and use a Task activity with your configuration to create task.
Note 2: The journey can be ran as a one time job or can combine an automation with SQL activities and a journey to run as a batch job. I don't see if have a way to make it run in real time.