If I have 2 pods is there a way for them to talk to each other without any other resource created and used?
The question goes for the both situations - if they are in the same namespace or in different ones.
Yes, they can!
Assuming you don't have any network policies restricting the calls, it just need to know its DNS name, this is how it works:
The scenarios above assume you haven't set the hostname neither subdomain in the pod and is using the default configuration.
In more advanced scenarios you would also use the cluster dns suffix to call these services. The following docs describes everything in more details https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
I would answer yes to your question... There is multiple question to speak to a service like the one ShreePrakash gave you and the same can be apply to a pod.
Here is another question in relation: 2 Kubernetes pod communicating without knowing the exposed address
This answers your question as you should be able to do the same with PODNAME.PODNAMESPACE:PORT
and it should work.
Now why is it not done? Simply because pod have a random ID added to their names at creation (something like: nginx-ingress-1234456) and if it crashes and get recreates the name won't be the same. That applies to stateless apps, you may be able to deduct the name of the pod in a stateful state with only one pod...
That is why services are used to make it easier to target pod as their names is the one you declared on creation.
Hope this helps.