Dynamo is a wrapper around the standard Revit API; search these articles for 'dynamo' and 'wrapper':
It also adds some functionality of its own, e.g., its own geometry library.
For your purposes, I think both would work well.
For learning purposes, I would suggest starting step by step with different areas:
- Revit end-user interface, optimal workflow and best practices
- Programming basics, e.g., a non-Revit-related Python tutorial
- .NET programming basics, e.g., a non-Revit-related C# tutorial
- Revit API basics, e.g., the My First Revit Plug-in video tutorial
- A Dynamo tutorial
The first is vital. You need that to understand and solve your Revit task. Only after understanding it from a UI point of view will you be able to address it effectively from the API side of things.
Learning a little bit of Python is highly recommended. It is the most didactical language there is, and learning basic programming with it is fun and easy.
.NET is the foundation of the Revit API, so you need some understanding of that.
You need to understand the architecture of the Revit API to get an add-in implemented, loaded and running.
You can quickly dive in to Dynamo and then compare to see what you prefer:
- Python versus C#
- Pure Revit API versus Dynamo
Please look in depth at the Revit API getting started material and procedures listed here:
https://thebuildingcoder.typepad.com/blog/about-the-author.html#2
Good luck and have fun!
Please let us know how it goes for you, what you end up choosing, and why.