Cardinality Estimation is just an estimation. Many times it won't be the exact number of rows, for a multitude of reasons. But if it is, great, that means the SQL Engine was able to do its job properly.
A cardinality under-estimate is essentially just as a detrimental as an over-estimate by the same proportional amount. In either case, it's not usually a problem until the difference is off by an order of magnitude or more.
An over-estimate may result in too many resources (e.g. Memory) being requested to serve the query. In bad enough cases, this will detract resources from the server that could've been used by other queries, and may take longer to acquire for the current query itself, which results in some waiting on those resources. As Sranda points out, a single query can request up to 25% of the SQL Server instance's Max Server Memory setting, just to hog it all to itself for that execution.
An under-estimate has the opposite effect. Not enough resources will be requested, and in bad enough cases, will cause the operations of the execution plan for that query to run slower, because they don't have enough resources to process. This becomes a bottleneck of executing the query then.
By the way, you should use Paste The Plan to upload your execution plans to. It's a much more reliable resource than whatever you're currently using.